12

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

myapp$ pm2 start bin/www

这很好用,只是添加--watch标志似乎不起作用;每次更改 JS 源时,我都需要显式重新启动它以使更改生效:

myapp$ pm2 restart www

我究竟做错了什么?我已经--watch使用非 ExpressJS 应用程序尝试了该标志,它按预期工作。

4

4 回答 4

9

在堆栈溢出中查看此解决方案

问题是相对于pm2正在观看的路径,如果是相对于执行文件或项目的实际根路径。

于 2015-02-13T14:57:13.597 回答
3

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

myapp$ pm2 start bin/www --watch /your/location/to/app
于 2018-04-12T06:43:17.463 回答
3

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. 运行服务器(开发/产品)

pm2 start ecosystem.config.js
pm2 start ecosystem.config.js --env production

3. 更多信息 :

https://pm2.keymetrics.io/docs/usage/watch-and-restart/

于 2021-02-21T06:04:33.173 回答
0

我从来没有设法让默认手表设置在 Ubuntu 中工作,但是通过高级手表选项使用轮询是有效的:

  "watch":  true,
  "ignore_watch" : ["node_modules"],
  "watch_options": {
    "usePolling": true,
    "interval": 1000
  }

更多信息:

https://github.com/buunguyen/PM2/blob/master/ADVANCED_README.md#watch--restart

https://github.com/paulmillr/chokidar#api

于 2021-12-13T04:42:17.010 回答