【问题标题】:How to watch and reload an ExpressJS app with pm2如何使用 pm2 观看和重新加载 ExpressJS 应用程序
【发布时间】:2021-12-13 12:42:17
【问题描述】:

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

myapp$ pm2 start bin/www

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

myapp$ pm2 restart www

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

【问题讨论】:

  • pm2 start app.js --watch

标签: node.js express pm2


【解决方案1】:

看到这个solution in Stack Overflow

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

【讨论】:

    【解决方案2】:

    您需要在 --watch 选项中指定应用位置

    myapp$ pm2 start bin/www --watch /your/location/to/app
    

    【讨论】:

      【解决方案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/

      【讨论】:

        【解决方案4】:

        我从来没有设法让默认手表设置在 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

        【讨论】:

        • 这个解决方案在我的情况下运行良好
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-01-07
        • 2022-08-06
        • 1970-01-01
        • 2019-04-26
        • 1970-01-01
        • 2013-04-19
        • 1970-01-01
        相关资源
        最近更新 更多