Nodejs应用程序错误:使用pm2部署时绑定EADDRINUSE

快速应用程序部署与pm2

数据库是MongoDB

当用命令运行应用程序时:

NODE_ENV=production pm2 start app.js -i max

下午有错误:绑定EADDRINUSE,这是日志,当出错时,

 [app err (l0)] js:1073:26 [app err (l1)] at Object.30:1 (cluster.js:587:5) [app err (l2)] at handleResponse (cluster.js:171:41) [app err (l3)] at respond (cluster.js:192:5) [app err (l4)] at handleMessage (cluster.js:202:5) [app err (l5)] at process.EventEmitter.emit (events.js:117:20) [app err (l6)] at handleMessage (child_process.js:318:10) [app err (l7)] at child_process.js:392:7 [app err (l8)] at process.handleConversion.net.Native.got (child_process.js:91:7)Error: bind EADDRINUSE [app err (l9)] at errnoException (net.js:901:11) [app err (l10)] at net.js:1073:26 [app err (l11)] at Object.31:1 (cluster.js:587:5) [app err (l12)] at handleResponse (cluster.js:171:41) [app err (l13)] at respond (cluster.js:192:5) [app err (l14)] at handleMessage (cluster.js:202:5) [app err (l15)] at process.EventEmitter.emit (events.js:117:20) [app err (l16)] at handleMessage (child_process.js:318:10) [app err (l17)] at child_process.js:392:7 [app err (l18)] at process.handleConversion.net.Native.got (child_process.js:91:7) 

这导致应用程序很慢,如何解决这个问题,非常感谢

我不知道你的应用程序使用的端口。 这取决于你的代码。 在这个例子中,我将假定端口是3000

您需要validation端口是否已经在您的系统上。 要做到这一点:

  • 在Linux上: sudo netstat -nltp | grep 3000 sudo netstat -nltp | grep 3000
  • 在OSX上: sudo lsof -i -P | grep 3000 sudo lsof -i -P | grep 3000

如果你有结果,你需要杀死进程( kill <pid> )。

你应该检查pm2 list返回0进程。 另外,当你做一个pm2 stopAll ,套接字不会被释放。 不要忘了做一个pm2 kill ,以确保守护进程被杀死。

 $ pm2 kill Daemon killed 

OS X

Cmd +空格 – >input:活动监视器 – >find你的应用程序并终止它。

在这里输入图像描述