133 votes

comment libérer localhost de l'erreur : listen EADDRINUSE

Je teste un serveur écrit en nodejs sur Windows 7. et lorsque j'essaie d'exécuter le testeur en ligne de commande, j'obtiens l'erreur suivante

Error: listen EADDRINUSE
at errnoException (net.js:614:11)
at Array.0 (net.js:704:26)
at EventEmitter._tickCallback (node.js:192:40)

comment puis-je le réparer sans redémarrer ?

9 votes

sudo killall node peut être utile

6voto

Eshan Chattaraj Points 122

Lorsque vous obtenez une erreur

Erreur : écouter EADDRINUSE

Ouvrez l'invite de commande et tapez les instructions suivantes :

netstat -a -o | grep 8080
taskkill /F /PID** <*ur Process ID no*>

après cela redémarrez l'interface gap du téléphone.

Si vous voulez savoir quel ID de processus phonegap utilise, ouvrez TASK MANAGER et regardez l'intitulé de la colonne PID et trouver le numéro PID.

5voto

Le projet susmentionné killall -9 suggéré par Patrick fonctionne comme prévu et résout le problème mais vous voudrez peut-être lire la partie édition de cette même réponse pour savoir pourquoi kill -9 n'est peut-être pas le meilleur moyen de le faire.

En plus de cela, vous pourriez vouloir cibler un seul processus plutôt que de tuer aveuglément tous les processus actifs.

Dans ce cas, obtenez d'abord l'ID du processus (PID) du processus en cours d'exécution sur ce port (disons 8888) :

lsof -i tcp:8888

Cela renverra quelque chose comme :

COMMAND   PID    USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
node     57385   You   11u  IPv6 0xac745b2749fd2be3      0t0  TCP *:ddi-tcp-1

(LISTEN) Ensuite, faites-le (ps - en fait, ne le faites pas. Continuez à lire ci-dessous) :

kill -9 57385

5voto

saran3h Points 1541

Cela fonctionne sur Mac :

Étape 1.

sudo lsof -i tcp:3000 (or whatever port you want to kill)

La commande ci-dessus vous donnera l'Id(s) du processus qui détient actuellement le port.

Étape 2.

Kill -9 <pid>

3voto

Adeel Ahmad Points 176

Vous pouvez changer votre port dans app.js ou dans le fichier de configuration de votre projet.

default('port', 80)

et pour voir si le port 80 est déjà utilisé vous pouvez faire

netstat -antp |grep 80

netstat -antp |grep node

vous pourriez vouloir voir si le processus de nœud est déjà en cours d'exécution ou non.

ps -ef |grep node

et si vous trouvez qu'il est déjà en cours d'exécution, vous pouvez le tuer en utilisant

nœud killall

1voto

J'ai créé 2 serveurs, écoutant sur le même port 8081, fonctionnant à partir du même code, tout en apprenant

La création du premier serveur aurait dû fonctionner La création du second serveur a échoué avec EADDRINUSE.

les retards des callbacks node.js peuvent être la raison pour laquelle aucun des deux n'a fonctionné, ou la création du 2ème serveur a connu une exception, et le programme s'est arrêté, donc le 1er serveur est également fermé.

2 conseils sur les problèmes de serveur, j'ai obtenu de : Comment corriger l'erreur : listen EADDRINUSE lors de l'utilisation de nodejs ?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X