这是我的第一个 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 在重新启动之前没有终止服务。
我发现了一个论坛帖子,建议这样做:
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);
在 package.json 文件的脚本部分添加这个
dev : "kill -9 $(lsof -i :3000) &>/dev/null | exit 0 nodemon server.js"
因此,无论何时进行保存,它都会明确终止端口 3000 上的进程并重新启动。
希望对您有所帮助。