C'est la première fois que je travaille avec Node.js et j'ai rencontré ce problème:
J'ai démarré un serveur Node via le plugin d'un IDE. Malheureusement, je ne peux pas utiliser le terminal de l'IDE. J'ai donc essayé d'exécuter le script à partir de la ligne de commande.
C'est le problème - j'utilise le module Express et mon application écoute un port (8080). Lorsque je démarre l'application à partir de la ligne de commande, cela génère cette erreur:
events.js:71
throw arguments[1]; // Unhandled 'error' event
^
Error: listen EADDRINUSE
at errnoException (net.js:770:11)
at HTTPServer.Server._listen2 (net.js:910:14)
at listen (net.js:937:10)
at HTTPServer.Server.listen (net.js:986:5)
at Object.<anonymous> (C:\xampp\htdocs\node\chat\app.js:5:5)
at Module._compile (module.js:449:26)
at Object.Module._extensions..js (module.js:467:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Module.runMain (module.js:492:10)
Même si je ne suis pas très sûr de la nature de cette erreur, j'ai supposé que c'était parce que l'application écoutait sur un port déjà utilisé. Alors j'ai fait:
netstat -an
je vois
TCP 0.0.0.0:8080 0.0.0.0:0 LISTENING
C'est parce que le serveur Node est déjà démarré lorsque j'ai essayé de le démarrer à partir de l'EDI.
Alors je veux savoir, comment puis-je arrêter toutes les instances de serveur? Aussi si vous pouvez me dire comment détecter ce qui tourne sur un port et le tuer.
Réponses:
Machine Windows:
Vous devez tuer un serveur Node.js, et vous n'avez aucun autre processus Node en cours d'exécution, vous pouvez dire à votre machine de tuer tous les processus nommés
node.exe
. Cela ressemblerait à ceci:Et si les processus persistent, vous pouvez forcer les processus à se terminer en ajoutant l'
/f
indicateur:Si vous avez besoin d'un contrôle plus fin et que vous ne devez tuer qu'un serveur qui s'exécute sur un port spécifique, vous pouvez utiliser
netstat
pour trouver l'ID de processus, puis lui envoyer un signal d'arrêt. Donc, dans votre cas, où se trouve le port8080
, vous pouvez exécuter ce qui suit:La cinquième colonne de la sortie est l'ID de processus:
Vous pouvez alors tuer le processus avec
taskkill /pid 14828
. Si le processus refuse de se terminer, ajoutez simplement le/f
paramètre (force) à la commande.Machine Linux:
Le processus est presque identique. Vous pouvez soit tuer tous les processus Node en cours d'exécution sur la machine (à utiliser
-$SIGNAL
siSIGKILL
c'est insuffisant):Ou également en utilisant
netstat
, vous pouvez trouver le PID d'un processus en écoute sur un port:L'ID de processus dans ce cas est le numéro avant le nom du processus dans la sixième colonne, que vous pouvez ensuite passer à la
kill
commande:Si le processus refuse de se terminer, utilisez simplement l'
-9
indicateur, qui est unSIGTERM
et ne peut pas être ignoré:la source
process.exit()
dans votre application provoque la fermeture de l'instance NodeJS.killall node
dans bash tuerait toutes les instances NodeJS exécutées sur votre machine.taskkill /IM node.exe
. Il tuera tous les processus nommésnode.exe
.Le moyen le plus rapide est
Fonctionne avec Linux, OS X
la source
node: no process found
De plus, lorsque je grep pour un nœud de processus qui s'exécutent sur le port spécifique, l'ID de processus a-
au lieu d'un numéro lui-même.Vous pouvez utiliser
lsof
get le processus lié au port requis.Malheureusement, les indicateurs semblent être différents selon le système, mais sur Mac OS X, vous pouvez exécuter
Par exemple, sur ma machine, j'obtiens quelque chose comme:
Le deuxième numéro est le PID et le port qu'ils écoutent se trouve à droite avant "(LISTEN)". Trouvez le PID voyou et
kill -9 $PID
terminez avec des préjugés extrêmes.la source
Terminal Windows et GitBash J'avais besoin d'utiliser cette commande dans le terminal Windows / Webstorm / GitBash
la source
si vous souhaitez tuer un processus de nœud spécifique, vous pouvez accéder à la ligne de commande et saisir:
pour obtenir une liste de tous les ID de processus de nœud. maintenant vous pouvez obtenir votre identifiant de processus (pid), puis faites:
et si vous voulez tuer tous les processus de nœud, faites:
Le commutateur -9 est comme la tâche de fin sur Windows. cela forcera la fin du processus. tu peux faire:
pour voir tous les commutateurs de la commande kill et leurs commentaires.
la source
Vous pouvez essayer ceci:
la source
Linux
Pour impressionner vos amis
Mais c'est celui dont tu te souviendras
la source
Vous pouvez également essayer:
killall nodejs
la source
Si vous utilisez Windows, procédez comme suit:
Ouvrez le gestionnaire de tâches, recherchez ce processus:
Ensuite, faites un clic droit et "Fin de tâche".
Voilà, maintenant toutes les commandes npm s'exécutent depuis le début.
la source
Multiplateforme, stable, meilleure solution:
utilisez fkill pour tuer le processus qui prend votre port:
Pour installer fkill, utilisez la commande: npm i -g fkill
la source
tu peux essayer
tu peux aussi essayer
la source
cela fonctionne bien dans Windows 10
la source
J'utilise le système d'exploitation Windows.
J'ai tué tout le processus de nœud et redémarré l'application, cela fonctionnait.
essayer
la source
Utilisez la commande suivante pour tuer et redémarrer le serveur de nœuds à partir du fichier de commandes
la source
dans la commande Windows Tapez la commande coup:
taskkill / f / im node.exe
la source
Appuyez sur cmd ou bash: Ctrl + C
la source