Приложение Nodejs Ошибка: свяжите EADDRINUSE при использовании pm2 deploy

Экспресс-приложение развертывается с pm2

База данных

- mongodb

при запуске приложения с командой:

NODE_ENV=production pm2 start app.js -i max

aften имеет Error: bind 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)

Это вызывает медленное приложение. Как решить эту проблему, спасибо очень много.

Ответ 1

Я не знаю порт, используемый вашим приложением. Это зависит от вашего кода. В этом примере я предполагаю, что порт 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

Ответ 2

OS X

Cmd + Space → enter: Activity Monitor → найти приложение и завершить его.

введите описание изображения здесь