Node.js 如何使用pm2观看和重新加载ExpressJS应用程序

Node.js 如何使用pm2观看和重新加载ExpressJS应用程序,node.js,express,pm2,Node.js,Express,Pm2,我正在开发一个ExpressJS应用程序。 我使用pm2加载它: myapp$ pm2 start bin/www 这很好,除了添加--watch标志似乎不起作用;每次更改JS源代码时,我都需要显式重新启动它,以使更改生效: myapp$ pm2 restart www 我做错了什么?我在一个非ExpressJS应用程序中尝试了--watch标志,它按预期工作。看到了吗 问题与pm2监视的路径有关,如果它与执行文件或项目的实际根路径有关。您需要为--watch选项指定应用程序位置 myapp

我正在开发一个ExpressJS应用程序。 我使用pm2加载它:

myapp$ pm2 start bin/www
这很好,除了添加
--watch
标志似乎不起作用;每次更改JS源代码时,我都需要显式重新启动它,以使更改生效:

myapp$ pm2 restart www
我做错了什么?我在一个非ExpressJS应用程序中尝试了
--watch
标志,它按预期工作。

看到了吗


问题与pm2监视的路径有关,如果它与执行文件或项目的实际根路径有关。

您需要为--watch选项指定应用程序位置

myapp$ pm2 start bin/www --watch /your/location/to/app
2021年2月

现在情况有了一些变化。下面给出了我的项目的完整示例。以下工作:

1。创建配置文件。文件:
ecosystem.config.js

module.exports = {
  apps: [
    {
      name: 'api',
      script: './bin/www', // --------------- our node start script here like index.js

      // ------------------------------------ watch options - begin
      watch: ['../'],
      watch_delay: 1000,
      ignore_watch: ['node_modules'],
      watch_options: {
        followSymlinks: false,
      },
      // ------------------------------------ watch options - end

      env: {
        NODE_ENV: 'development',
        PORT: 3001,
        DEBUG: 'api:*',
        MONGODB_URI:
          'mongodb://localhost:27017/collection1?readPreference=primary&ssl=false',
      },
      env_production: {
        NODE_ENV: 'production',
      },
    },
  ],
  deploy: {
    production: {
        // user: "SSH_USERNAME",
        // host: "SSH_HOSTMACHINE",
    },
  },
};
2。运行服务器(dev/prod)

3。更多信息:

pm2启动app.js——观看
pm2 start ecosystem.config.js
pm2 start ecosystem.config.js --env production