【问题标题】:Express 4 + pm2 watch not workingExpress 4 + pm2 手表不工作
【发布时间】:2015-03-09 02:01:19
【问题描述】:

我正在运行 pm2:

pm2 start bin/www --watch ../

问题是当我更新根文件夹中的 app.js 时,它似乎不是自动重启节点。有什么想法吗?

【问题讨论】:

  • 我自己一直在尝试解决这个问题。我的想法是它可能使用相对于执行目录的监视目录,这是项目的根目录,所以当您指定--watch ../ 时,您实际上是在指定文件夹 above 其中你真的想看。我自己没有尝试过,因为我在生产服务器上使用pm2,所以我最终输入sshgit pull输入最新代码,然后手动运行pm2 restart www,这不会' t 与您的问题有关。
  • @BrandonAnzaldi:发现了一个解决方案。在下面作为答案发布。
  • 2021 年 2 月 - 现在仅以下作品 - stackoverflow.com/a/66299597/984471

标签: node.js express pm2 express-4


【解决方案1】:

想出了一个解决方案:

//processes.json:
    {
      "apps" : [{
        "name"        : "someExpress4App",
        "script"      : "bin/www",
        "watch"       : "../",
        "log_date_format"  : "YYYY-MM-DD HH:mm Z",
      }]
    }

把它放在你项目的根目录,然后运行你的 pm2:

pm2 start processes.json

【讨论】:

  • “watch”应该是一个布尔值吗?启用监视功能,默认为“false”。如果为 true,每次在您的应用的文件夹或子文件夹中检测到文件更改时,它都会重新启动您的应用
  • 这样做将监视整个 Express 父目录。这意味着如果您使用像 Webstorm 这样维护目录 .idea 的东西,那么每次 Webstorm 写入该目录时,您的 pm2 都会重新启动您的服务器。如果您修改公共文件夹中的某些内容,同样的事情......而不是那样,我建议直接添加您想要观看的目录和您的 app.js "watch": ['core', 'other-folder', 'app.js']
  • @user1853777:如果您确切知道要不断刷新的内容,最好使用"ignore_watch" : [".idea"]
  • 我想的是另一种方式:如果你确切地知道你想看什么,把它放在“看”;)。主要优点是如果有人使用其他 IDE,则无需进行任何更改。在 ignore_watch 中,您还必须列出公用文件夹。在我的项目中,我更喜欢所有服务器文件只有一个文件夹,因此很容易在 watch 中列出。无论如何,这只是一种偏好。
  • 嘿,我第一次做 pm2 开始,我的 json 就像 { "apps":[ { "name":"fp-back", "script":"/opt/nodeJs/fp-back/bin/www", "log_file":"/var/log/pm2/fp-back.log", "error_file":"/bar/log/pm2/fp-back-err.log", "watch":"/opt/nodeJs/fp-back/" } ] } 我做错了什么,我三重检查这个文件
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-12-26
  • 2016-06-05
  • 1970-01-01
  • 2017-12-04
  • 1970-01-01
  • 2014-12-10
  • 2023-03-30
相关资源
最近更新 更多