2

我已经安装了 PM2 以保持我的节点应用程序运行。( https://github.com/Unitech/pm2 )

它工作得很好,但是......

自从用它安装和运行我的应用程序

pm2 启动 app.js pm2 停止应用

我不再能够使用运行我的应用程序

节点应用程序.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 似乎无法解决此问题。有什么想法吗?

4

2 回答 2

6

总的来说,这意味着您有一个进程在同一个端口上运行,您可以使用以下命令终止它:

sudo kill $(sudo lsof -t -i:8080)

只需用您的服务器端口替换 8080

于 2014-05-14T15:36:34.020 回答
3

如果您遇到此问题,请执行以下操作:

pm2 kill

(它会杀死 pm2 并释放端口)

这个错误真的很奇怪,只影响 v0.10.x 节点版本。

我推荐你使用节点 v0.11.10

于 2013-09-20T21:35:46.997 回答