使用PM2部署时绑定EADDRINUSE

使用PM2部署时绑定EADDRINUSE

本文介绍了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)

这会导致APP速度变慢,如何解决这个问题,非常感谢

推荐答案

我不知道您的应用程序使用的端口。这取决于您的代码。在本例中,我将假设端口为3000

您需要验证该端口是否已在您的系统上使用。要做到这一点:

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

如果有结果,则需要终止该进程(kill <pid>)。

您应该检查pm2 list是否返回0进程。此外,当您执行pm2 stopAll时,套接字不会被释放。不要忘记执行pm2 kill以确保已终止后台进程。

$ pm2 kill
Daemon killed

这篇关于NodeJS应用程序错误:使用PM2部署时绑定EADDRINUSE的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

07-31 01:31