web-dev-qa-db-fra.com

comment libérer localhost de Error: listen EADDRINUSE

je teste un serveur écrit en nodejs sur Windows 7 .__ et lorsque j'essaie d'exécuter le testeur dans la ligne de commande, l'erreur suivante s'affiche

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 résoudre ce problème sans avoir à redémarrer?

103
adam

Cela signifie que l'adresse à laquelle vous essayez de lier le serveur est en cours d'utilisation. Essayez un autre port ou fermez le programme en utilisant ce port.

91
fent

Courir:

ps -ax | grep node

Vous obtiendrez quelque chose comme:

60778 ??         0:00.62 /usr/local/bin/node abc.js

Alors fais:

kill -9 60778
153
Komposr

La commande suivante vous donnera une liste des processus de noeud en cours d'exécution. 

ps | grep node

Pour libérer ce port, arrêtez le processus en procédant comme suit.

kill <processId>
35
wcurtis

Sous Linux (au moins dérivés de Ubuntu)

killall node

est plus facile que cette forme.

ps | grep <something>
kill <somepid>

Cela ne fonctionnera pas non plus si un enfant orphelin tient le port. Au lieu de cela, faites ceci:

netstat -punta | grep <port>

Si le port est tenu, vous verrez quelque chose comme ceci:

tcp           0      0.0.0.0:<port>          0.0.0.*       LISTEN     <pid>/<parent>

Maintenant tuez par pid:

kill -9 <pid>
34
WolfReporter

Vous obtenez l'erreur EADDRINUSE car le port que votre application souhaite utiliser est occupé par un autre processus. Pour libérer ce port, vous devez mettre fin au processus d'occupation.

Puisque vous êtes sur Windows, vous pouvez terminer le processus à l’aide de la commande Invite (cmd). Avec cmd, vous pouvez découvrir l'ID de processus (PID) de l'application bloquante. Vous aurez besoin du PID pour terminer/tuer le processus.

Voici un guide étape par étape ...

  1. Recherchez tous les processus en cours d'exécution sur un port spécifié (dans cet exemple, le port est "3000"):

    netstat -ano | trouver ": 3000"

  2. La commande netstat répertorie tous les processus en cours d'exécution sur le port spécifié. Dans la dernière colonne des résultats netstat, vous pouvez voir les PIDs (dans cet exemple, PID est "8308"). Vous pouvez en savoir plus sur une PID spécifique en exécutant la commande suivante:

    liste de tâches/fi "pid eq 8308"

  3. Si vous souhaitez mettre fin à un processus, vous pouvez le faire avec la commande suivante en utilisant sa variable PID (dans cet exemple, PID est "8308"):

    taskkill/pid 8308/f

Capture d'écran

 enter image description here

21
Benny Neugebauer

Lorsque vous obtenez une erreur Erreur: écoutez EADDRINUSE,

Essayez d’exécuter les commandes Shell suivantes:

netstat -a -o | grep 8080
taskkill /F /PID 6204

greped for 8080, car je sais que mon serveur fonctionne sur le port 8080. (static me dit quand je le lance: 'servant ". À http://127.0.0.1:8080 '.) pour rechercher un autre port.

19
swathy valluri

supposons que votre serveur fonctionne sur port 3000 

lsof -i tcp:3000
    COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
    node    11716 arun   11u  IPv6 159175      0t0  TCP *:3000 (LISTEN)

après cela, utilisez kill -9 <pid>

dans le cas ci-dessus Sudo kill -9 11716

14
Arun Kasyakar

utilisez la commande ci-dessous pour tuer un processus exécuté sur un certain port - 3000 dans cet exemple ci-dessous 

kill -9 $(lsof -t -i:3000)
8
Atta Ur Rahman

Une solution possible qui a fonctionné pour moi consistait simplement à fermer la fenêtre du navigateur dans laquelle le script correspondant " http: // localhost: 3000/ " était exécuté.

7
iloo

Quand vous obtenez une erreur

Erreur: écoutez EADDRINUSE

Ouvrez la commande Invite et tapez les instructions suivantes:

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

après cela redémarrer l'interface de lacune téléphonique.

Si vous voulez savoir quel identificateur de processus utilise phonegap, ouvrez TASK MANAGER et consultez l'en-tête de colonne_ PIDet recherchez le PID no.

6
Eshan Chattaraj

Le noeud killall -9 mentionné ci-dessus, 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 la meilleure façon de le faire.

En plus de cela, vous voudrez peut-être cibler un seul processus plutôt que de tuer aveuglément tous les processus actifs.

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

lsof -i tcp:8888

Cela retournera quelque chose comme:

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

(ECOUTER) Ensuite, il suffit de faire (ps - en fait pas. S'il vous plaît continuez à lire ci-dessous):

kill -9 57385
4
Hemant Raghuwanshi

vous pouvez modifier votre port dans app.js ou dans le fichier de configuration du projet. 

default ('port', 80)

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

netstat -antp | grep 80

netstat -antp | noeud grep

vous voudrez peut-être voir si le processus de noeud est déjà en cours ou non. 

ps -ef | noeud grep

et si vous la trouvez déjà en marche, vous pouvez la tuer en utilisant

killall node

2
Adeel Ahmad

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 a fonctionné La création du deuxième serveur a échoué avec EADDRINUSE

les retards de rappel des noeuds.js peuvent expliquer l’absence de travail, ou la création du second serveur avait une exception et le programme était quitté, de sorte que le 1er serveur est également fermé

2 indice de problème de serveur, je ai eu de: Comment résoudre l'erreur: écouter EADDRINUSE tout en utilisant nodejs?

1

Vérifier l'ID de processus

Sudo lsof -i: 8081

Que tuer le processus particulier

Sudo Kill -9 2925

 enter image description here 

1
Surender Kumar

Cela fonctionne sur Mac:

Étape 1. 

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

La commande ci-dessus vous indiquera le ou les ID de processus détenant actuellement le port.

Étape 2. 

Kill -9 <pid>
1
saran3h

Erreur: écoutez EADDRINUSE pour le résoudre dans Ubuntu, exécutez-le dans le terminal netstat -nptl et après ce kill -9 {process-number}, cette commande consiste à tuer le processus de noeud. Vous pouvez maintenant essayer de réexécuter la commande node server.js

Ex 

écouter EADDRINUSE ::: 8080

netstat -nptl 

tcp6 0 0 ::: 9000 ::: * LISTEN 9660/Java
tcp6 0 0 ::: 5800 ::: * ECOUTER -
tcp6 0 0 ::: 5900 ::: * ECOUTER -
tcp6 0 0 ::: 8080 ::: * LISTEN 10401/node
tcp6 0 0 ::: 20080 ::: * LISTEN 9660/Java
tcp6 0 0 ::: 80 ::: * ECOUTER -
tcp6 0 0 ::: 22 ::: * ECOUTER -
tcp6 0 0 ::: 10137 ::: * ECOUTER 9660/Java 

tuer -9 10401

1
navnit kapadiya

il suffit de tuer le noeud. 

0
Aditya Prakash

J'ai utilisé la commande netstat -ano | grep "portnumber" afin de répertorier le numéro de port/PID de ce processus. Ensuite, vous pouvez utiliser taskkill -f //pid 111111 pour tuer le processus, la dernière valeur étant le pid que vous avez trouvé dans la première commande.

Un des problèmes que je rencontre parfois est le réapparition de nœud même après la suppression du processus. Je dois donc utiliser le bon vieux gestionnaire de tâches pour supprimer manuellement le processus de nœud.

0
davida227

ps -ef | grep node trouver app.js, kill pid de app.js

0
megan5

Pour tuer le serveur de noeud, commencez par exécuter cette commande dans votre terminal: 

  1. top
  2. ouvrez une autre fenêtre, puis copiez le serveur id de la fenêtre précédente: PID number -9 killso, vous avez tué votre serveur de nœud. Essayez à nouveau d’exécuter votre application.
0
Mohammed Dwina

Dans mon cas, le redémarrage de la machine a résolu le problème.

0
Balram Singh

Si vous avez essayé toutes les solutions ci-dessus, mais vous ne trouvez toujours pas le processus rouge, essayez-les à nouveau, mais veillez à inclure "Sudo" devant les commandes.

0
MMMTroy

J'ai le noeud rouge installé sur mon Mac et mon Raspberry Pi. Avait exactement le même problème et faire 'killall' n'a pas aidé. Une fois que j'ai arrêté le Raspberry Pi et redémarré mon ordinateur, tout a bien fonctionné. 

0
alkopop79

Il est possible que vous ayez essayé d’exécuter la commande npm start dans deux onglets différents.

0
Bhudke Aakshayy

Vous devrez tuer le port en essayant d'utiliser la commande suivante sur le terminal

$ Sudo killall -9 nodejs
0
Shivam Kohli

Si vous aimez davantage l'interface utilisateur, trouvez le processus Node.js dans le gestionnaire de tâches Windows et éliminez-le.

0
PolinaC