Expressjs pm2忽略watch public / images文件夹

时间:2016-06-28 08:24:57

标签: javascript node.js express pm2

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

2 个答案:

答案 0 :(得分:9)

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/

答案 1 :(得分:4)

根据实际经验进行的简单说明

在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

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

字段说明:

  • 脚本-运行快速应用程序的脚本
  • watch -一个布尔型标志,用于控制pm2是否监视(或不监视)文件夹
  • ignore_watch -如果启用了监视,则告诉pm2哪些文件夹忽略监视(换句话说,这是一个监视监视器排除列表)
  • 名称-pm2进程的名称(“服务”)。将其设置为您选择的应用程序名称。

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

注意:在上面的示例中,我将node_modules文件夹从ignore_watch数组中删除了,因为我希望pm2在git pull和npm i之后导致节点模块发生变化的情况下重新启动服务。但是,通过编辑数组值很容易忽略node_modules或任何其他文件夹(例如temp,public等)