web-dev-qa-db-ja.com

Nodejsアプリケーションエラー:pm2デプロイを使用するときにEADDRINUSEをバインドする

pm2 を使用したExpressアプリケーションのデプロイ

データベースはmongodbです

コマンドでアプリを実行すると:

NODE_ENV=production pm2 start app.js -i max

aftenにはエラーがあります: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)

これにより、アプリが遅くなります。この問題の解決方法、ありがとうございました

19
lidashuang

アプリケーションで使用されているポートがわかりません。それはあなたのコードに依存します。この例では、ポートが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
29
Sandro Munda

OS X

Cmd + Space-> enter:Activity Monitor->アプリを見つけて終了します。

enter image description here

5
Lukas