我已经安装了PM2以保持我的节点应用程序运行。 (https://github.com/Unitech/pm2)
但是效果很好......
自从用它安装和运行我的应用程序
pm2启动app.js pm2停止应用
我无法再使用
运行我的应用节点app.js
相反,我收到以下错误:
domain.js:66
throw er;
^
Error: listen EADDRINUSE
at errnoException (net.js:770:11)
at Server._listen2 (net.js:910:14)
at listen (net.js:932:10)
at Server.listen (net.js:998:5)
at Function.app.listen (/home/ssp/node_modules/express/lib/application.js:535:24)
at Object.<anonymous> (/home/ssp/app.dev.js:22:5)
at Module._compile (module.js:449:26)
at Object.Module._extensions..js (module.js:467:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
当您尝试两次运行相同的操作时,通常会发生此错误。
然而app.js没有运行。我已经在PM2中停止了它。当我输入
ps aux | grep node
要检查它是否仍然存在,则不是。
卸载PM2似乎无法解决此问题。有什么想法发生了什么?
答案 0 :(得分:6)
总的来说,这意味着您有一个在同一端口上运行的进程,您可以使用以下命令将其终止:
sudo kill $(sudo lsof -t -i:8080)
只需将8080替换为您的服务器端口
答案 1 :(得分:3)
如果您遇到此问题,请执行以下操作:
pm2 kill
(它杀死pm2并释放端口)
这个bug真的很奇怪,只影响v0.10.x节点版本。
我建议您使用节点v0.11.10