Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 为什么pm2监视会一次又一次地重新启动?_Node.js_Express_Pm2 - Fatal编程技术网

Node.js 为什么pm2监视会一次又一次地重新启动?

Node.js 为什么pm2监视会一次又一次地重新启动?,node.js,express,pm2,Node.js,Express,Pm2,我已经使用--watch标志工作了几周,没有任何问题 而今天,即使是最基本的Node.js+Express.js应用程序,在启动时也会不断地重复加载,没有结束 命令:pm2 start server.js--watch(结果pm2 id为0) server.js const express = require('express'); const app = express(); app.listen(3000, () => { console.log('Server succes

我已经使用
--watch
标志工作了几周,没有任何问题

而今天,即使是最基本的Node.js+Express.js应用程序,在启动时也会不断地重复加载,没有结束

命令:
pm2 start server.js--watch
(结果pm2 id为
0

server.js

const express = require('express');
const app = express();

app.listen(3000, () => {
    console.log('Server successfully started and listening at http://localhost:3000.');
});
我甚至使用了pm2停止0——观察



在某些情况下,我注意到即使pm2实例被停止(甚至被删除),端口仍然保持打开状态。因此,我一直在使用terminal命令
sudolsof-iTCP-sTCP:LISTEN-n-P
列出打开的端口,以及
sudokill-9pid
关闭打开的端口。不知道为什么会这样。不确定这是否相关。

我认为您应该创建一个processs.json并运行它。使用此选项更新以运行和观看:

//processes.json:
{
  "apps" : [{
    "name": "express-app",
    "script": "server.js",
    "watch": ["server.js"],
    "ignore_watch": ["node_modules"],
    "watch_options": {
      "usePolling": true,
      "alwaysStat": true,
      "useFsEvents": false
    },
    "env": {
        "NODE_ENV": "development"
    }
  }]
}
将其放在项目的根目录上,然后运行pm2,如下所示:

pm2 start processes.json

你试过检查pm2版本吗?也许可以更新一下。是否有其他进程将文件写入该目录或其他内容?编辑器自动保存?我尝试过删除pm2并重新安装,但还是一样。我确实在pm2安装中遇到了一系列错误,比如
Error:EACCES:permission denied,mkdir'/usr/local/lib/node\u modules/pm2/node\u modules/fsevents/.node gyp'
,这对我来说是有效的,然后我会执行初始
pm2启动进程.json
,但当我停止该实例并再次启动它时,它不会在任何更改后重新启动。我缺少什么?检查你的应用程序是否修改了项目文件夹中的文件(如日志文件)。如果启用了监视标志,对任何文件的更改都会触发重新启动。要防止出现这种情况,请使用进程文件并在其中添加watch_ignore标志。以下是有关如何使用流程文件的文档: