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

Joh*_*eri 7 node.js express pm2

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

myapp$ pm2 start bin/www
Run Code Online (Sandbox Code Playgroud)

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

myapp$ pm2 restart www
Run Code Online (Sandbox Code Playgroud)

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

Kan*_*cor 7

在Stack Overflow中查看此解决方案

问题是相对于pm2正在观察的路径,以及它是相对于执行文件还是项目的实际根路径.


Man*_*ddy 5

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",
    },
  },
};
Run Code Online (Sandbox Code Playgroud)

2. 运行服务器(开发/产品)

pm2 start ecosystem.config.js
pm2 start ecosystem.config.js --env production
Run Code Online (Sandbox Code Playgroud)

3. 更多信息 :

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