如何让 pm2 进程在停止/重新启动后进行观察?

How to get pm2 process to watch after it has been stopped/ restarted?

我的 pm2 进程开始使用它们的默认生态系统文件结构:

ecosystem.config.js

module.exports = {
    apps: [{
        env: {
            NODE_ENV: "development"
        },
        error_file: "./logs/error.log",
        ignore_watch: ["logs", "node_modules"],
        log_date_format: "YYYY-MM-DD HH:mm:ss Z",
        name: "my-app",
        out_file: "./logs/output.log",
        script: "./server.js",
        watch: true
    }]
}

我从 pm2 start ecosystem.config.js 开始这个过程并且工作正常,应用程序在文件更改时重新加载。

但是当我用 pm2 stop ecosystem.config.js 停止进程,然后用 pm2 start ecosystem.config.js 再次启动它时,pm2 不监视文件,尽管 watching 的显示列是 enabled.

重新启动进程并让手表工作的唯一方法是删除 pm2 进程,然后重新启动一个新进程。

我是否遗漏了一些让 stoprestart 与手表配合使用的东西?

谢谢。

尝试添加

watch_options: {
    "usePolling": true
}

看这里:http://pm2.keymetrics.io/docs/usage/watch-and-restart/

这不是 PM2 特定的选项,而是 PM2 使用的 chokidar 选项。
这些选项的文档可以在 here.

中找到

pm2 watch & restart documentation 给出了答案(在第一次阅读时一定已经掩盖了它):

Restart with --watch will toggle the watch parameter.

似乎在已存在的 pm2 实例上省略 --watch 标志不会切换 ecosystem.config.js 文件中的 watch 参数。 watch 参数仅在初始进程执行时切换,而不是后续进程。

所以停止这个过程,然后用 pm2 start ecosystem.config.js --watch 重新开始就可以了!

https://whosebug.com/users/7575111/nulldev

watch_options: { “使用轮询”:真 } 作为一个试用环境,这个答案对我很有帮助,不会让我每次都重新启动应用程序