Nodemon 在尝试重新启动 EEADINUSE 错误之前没有杀死 Node

问题描述 投票:0回答:1

这是我的第一个 node.js 服务器。 我已经创建了 server.js 并且它正在运行。 我安装了 nodemon 并让它运行,我也安装了 forever 并让它们一起运行。

每次我更改代码并运行 nodemon 时,都会出现 EADDRINUSE: 错误。

我做了

lsof -i TCP:3000

我得到

node 13837 p*********m 19u IPv6 161703311 0t0 TCP *:hbci (LISTEN)

所以我使用 -kill - 9 PID 杀死这个 PID

然而它再次启动,我一遍又一遍地得到错误。

我做错了什么:(

我只想:

  • nodemon 在我更改代码时重新启动
  • 监视 api 响应的终端
  • 永远保持运行。

编辑:

  • 从那以后我就永远卸载了,只运行了nodemon。
  • 如果我关闭端口,它会保持关闭状态,但是如果我更改代码,我会再次收到 EEADINUSE 错误。

我想我发现的是 nodemon 在重新启动之前没有终止服务。

我发现了一个论坛帖子,建议这样做:

nodemon qudaserver.js --signal SIGTERM

然而这也行不通

任何其他建议将不胜感激。

我的package.json代码:

{
  "name": "qudaapi",
  "version": "1.0.0",
  "description": "NodeJSAPI",
  "main": "qudaserver.js",
  "scripts": {},
  "author": "GAngel",
  "license": "ISC",
  "dependencies": {
    "bcryptjs": "^2.4.3",
    "dotenv": "^8.2.0",
    "express": "^4.17.1",
    "jsonwebtoken": "^8.5.1",
    "morgan": "^1.10.0",
    "mysql": "^2.18.1"
  }
}

我的qudaserver.js代码:

    const http = require('http');
const app = require('./app');


const port = process.env.port || 3000;
const server = http.createServer(app);

server.listen(port);
node.js api nodemon forever
1个回答
0
投票

在 package.json 文件的脚本部分添加这个

dev : "kill -9 $(lsof -i :3000) &>/dev/null | exit 0 nodemon server.js"
因此,无论何时进行保存,它都会明确终止端口 3000 上的进程并重新启动。

希望对您有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.