Expressjs pm2 忽略监视 public/images 文件夹

Expressjs pm2 ignore watch public/images folder

我有一个使用 nodejs 的网站。问题是当用户上传图片时网站停止工作。那是因为我认为文件更改时 PM2 会重启服务器。如何解决这个问题呢。 谢谢

PM2 有特殊标志 --ignore-watch 标志。

尝试在您的 app.js/index.js 所在的同一目录中创建文件 process.json 并粘贴:

{
  "watch": ["server", "client"],
  "ignore_watch" : ["node_modules", "public/images"],
  "watch_options": {
    "followSymlinks": false
  }
}

关于该主题的更多信息:http://pm2.keymetrics.io/docs/usage/watch-and-restart/

简单的解释,来自实际的经验

在 expressjs 应用程序的根文件夹中创建一个 json 文件。它可以有任何名称,但为了清楚起见,我使用了 pm2-process.json

{
    "script": "bin/www",
    "watch": true,
    "ignore_watch": ["log"],
    "watch_options": {
        "followSymlinks": false
    },
    "name": "YOUR_PM2_PROCESS_NAME"
}

要从终端启动您的 pm2 服务,请在 express 应用程序的根文件夹中:

pm2 start pm2-process.json

就是这样。真的很简单。还有许多其他选项,但这是最低限度的功能。

字段说明:

  • script - 运行 express 应用程序
  • 的脚本
  • watch - 一个布尔标志,用于控制 pm2 是否监视(或不监视)文件夹
  • ignore_watch - 如果watch是开着的,那么告诉pm2忽略哪些文件夹看(换句话说,这是一个watch监控排除列表)
  • name - pm2 进程的名称 ('service')。将其设置为您选择的应用程序名称。

完整文档在这里:http://pm2.keymetrics.io/docs/usage/application-declaration/#attributes-available

注意:我在上面的示例中将 node_modules 文件夹留在了 ignore_watch 数组之外,因为我希望 pm2 在 git pull 和 npm i 之后重新启动服务导致节点模块发生变化。然而,通过编辑数组值

很容易忽略 node_modules 或任何其他文件夹(例如,temp、public 等)