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标志。以下是有关如何使用流程文件的文档: