web-dev-qa-db-fra.com

Erreur d'application Nodejs: liez EADDRINUSE lorsque vous utilisez pm2 deploy

Déploiement d'une application express avec pm2

la base de données est mongodb

lors de l'exécution de l'application avec la commande:

NODE_ENV=production pm2 start app.js -i max

aften a une erreur: liez EADDRINUSE, ce sont les journaux, lorsque l'erreur,

[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)

Cela provoque une application lente, comment résoudre ce problème, merci beaucoup

19
lidashuang

Je ne connais pas le port utilisé par votre application. Cela dépend de votre code. Dans cet exemple, je suppose que le port est 3000.

Vous devez vérifier si le port est déjà pris sur votre système. Pour faire ça:

  • Sous linux: Sudo netstat -nltp | grep 3000
  • Sous OSX: Sudo lsof -i -P | grep 3000

Si vous avez un résultat, vous devez tuer le processus (kill <pid>).

Vous devez vérifier si pm2 list renvoie 0 processus. En outre, lorsque vous effectuez une pm2 stopAll, le socket n'est pas libéré. N'oubliez pas de faire un pm2 kill pour être sûr que le démon est tué.

$ pm2 kill
Daemon killed
29
Sandro Munda

OS X

Cmd + Espace -> entrez: Moniteur d'activité -> trouvez votre application et fermez-la.

enter image description here

5
Lukas