Dit is mijn eerste keer dat met Node.js werkt en ik liep dit probleem op:
Ik heb een knooppuntserver gestart via de plug-in van een IDE. Helaas kan ik de Terminal van de IDE niet gebruiken. Dus ik probeerde het script uit de opdrachtregel uit te voeren.
Dit is het probleem – ik gebruik de Express Module en mijn app luistert een poort (8080). Wanneer ik de app van de opdrachtregel start, gooit deze deze foutmelding:
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)
Hoewel ik niet zeker weet wat deze fout zou kunnen zijn, heb ik aangenomen dat het is omdat de app luistert op een poort die al in gebruik is. Dus deed ik:
netstat -an
Ik kan
zien
TCP 0.0.0.0:8080 0.0.0.0:0 LISTENING
Het is omdat de knoopserver al is gestart toen ik het probeerde te starten vanaf de IDE.
Dus ik wil het weten, hoe kan ik alle serveregeningen stoppen? Ook als je me kunt vertellen hoe je moet detecteren wat er op een poort loopt en het doden.
Antwoord 1, Autoriteit 100%
Windows-machine:
Als je een Node.js-server moet doden en er geen andere Node-processen actief zijn, kun je je machine vertellen om alle processen met de naam node.exe
te doden. Dat zou er zo uitzien:
taskkill /im node.exe
En als de processen nog steeds aanhouden, kunt u de processen afdwingen door de vlag /f
toe te voegen:
taskkill /f /im node.exe
Als je meer gedetailleerde controle nodig hebt en alleen een server wilt doden die op een specifieke poort draait, kun je netstat
gebruiken om de proces-ID te vinden en er vervolgens een kill-signaal naar sturen . Dus in jouw geval, waar de poort 8080
is, zou je het volgende kunnen uitvoeren:
C:\>netstat -ano | find "LISTENING" | find "8080"
De vijfde kolom van de uitvoer is de proces-ID:
TCP 0.0.0.0:8080 0.0.0.0:0 LISTENING 14828
TCP [::]:8080 [::]:0 LISTENING 14828
Je zou het proces dan kunnen beëindigen met taskkill /pid 14828
. Als het proces weigert af te sluiten, voeg dan gewoon de parameter /f
(forceren) toe aan het commando.
MacOS-machine:
Het proces is bijna identiek. U kunt ofwel alle Node-processen die op de machine draaien, beëindigen:
killall node
Of ook zoals vermeld in @jacob-groundwater’s antwoord hierondermet behulp van lsof
, u kan de PID vinden van een proces dat op een poort luistert (geef de vlag -i
en de poort door om dit aanzienlijk te versnellen):
$ lsof -Pi :8080
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
node 1073 urname 22u IPv6 bunchanumbershere 0t0 TCP *:8080 (LISTEN)
De proces-ID is in dit geval het nummer onder de PID-kolom, die u vervolgens kunt doorgeven aan de opdracht kill
:
$ kill 1073
Als het proces weigert af te sluiten, gebruik dan gewoon de -9
vlag, die een SIGTERM
is en niet kan worden genegeerd:
$ kill -9 1073
Linux-machine:
Nogmaals, het proces is bijna identiek. U kunt ofwel alle Node-processen die op de machine draaien, beëindigen (gebruik -$SIGNAL
als SIGKILL
onvoldoende is):
killall node
Of ook door netstat
te gebruiken, kunt u de PID vinden van een proces dat op een poort luistert:
$ netstat -nlp | grep :8080
tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 1073/node
De proces-ID is in dit geval het nummer vóór de procesnaam in de zesde kolom, die u vervolgens kunt doorgeven aan de opdracht kill
:
$ kill 1073
Als het proces weigert om af te sluiten, gebruik dan gewoon de -9
vlag, die een SIGTERM
is en kan niet worden genegeerd:
$ kill -9 1073
Antwoord 2, Autoriteit 17%
De snelste manier is
killall node
Werkt met Linux, OS X
Antwoord 3, Autoriteit 10%
U kunt lsof
gebruiken, ontvang het proces dat is gebonden aan de gewenste poort.
Helaas lijken de vlaggen anders, afhankelijk van het systeem, maar op Mac OS X kunt u
uitvoeren
lsof -Pi | grep LISTEN
Bijvoorbeeld op mijn machine krijg ik zoiets als:
mongod 8662 jacob 6u IPv4 0x17ceae4e0970fbe9 0t0 TCP localhost:27017 (LISTEN)
mongod 8662 jacob 7u IPv4 0x17ceae4e0f9c24b1 0t0 TCP localhost:28017 (LISTEN)
memcached 8680 jacob 17u IPv4 0x17ceae4e0971f7d1 0t0 TCP *:11211 (LISTEN)
memcached 8680 jacob 18u IPv6 0x17ceae4e0bdf6479 0t0 TCP *:11211 (LISTEN)
mysqld 9394 jacob 10u IPv4 0x17ceae4e080c4001 0t0 TCP *:3306 (LISTEN)
redis-ser 75429 jacob 4u IPv4 0x17ceae4e1ba8ea59 0t0 TCP localhost:6379 (LISTEN)
Het tweede nummer is de PID en de poort waarnaar ze luisteren is aan de rechterkant voor “(Luister)”. Zoek de Rogue PID en kill -9 $PID
om te beëindigen met extreem vooroordelen.
Antwoord 4, Autoriteit 6%
Windows & amp; Gitbash-terminal
Ik moest deze opdracht in Windows / WebStorm / Gitbash-terminal gebruiken
cmd "/C TASKKILL /IM node.exe /F"
Antwoord 5, autoriteit 3%
als u een specifiek knooppuntproces wilt beëindigen, kunt u naar de opdrachtregelroute gaan en typen:
ps aux | grep node
om een lijst te krijgen van alle knooppuntproces-ID’s. nu kun je je proces-ID (pid) krijgen, dan
doen:
kill -9 PID
en als je alle knooppuntprocessen wilt uitschakelen, doe dan:
killall -9 node
-9 schakelaar is als een eindtaak op Windows. het zal het proces dwingen te beëindigen.
je kunt doen:
kill -l
om alle schakelaars van het kill-commando en hun opmerkingen te zien.
Antwoord 6, autoriteit 2%
Linux
Om indruk te maken op je vrienden
ps aux | grep -i node | awk '{print $2}' | xargs kill -9
Maar dit is degene die je je zult herinneren
killall node
Antwoord 7, autoriteit 2%
Je kunt dit proberen:
taskkill /IM node.exe -F
Antwoord 8
het werkt prima in Windows 10
taskkill /f /im node.exe
Antwoord 9
Multiplatform, stabiele, beste oplossing:
Gebruik fkill om het proces te doden dat je poort neemt:
fkill -f :8080
Om de opdracht van FKill-gebruik te installeren: NPM I -G FKILL
Antwoord 10
Als u Windows gebruikt, volgt u dit:
-
Klik vervolgens met de rechtermuisknop op en “Eind taak”.
-
Dat is het, nu worden alle NPM-opdrachten uitgevoerd de start.
Antwoord 11
U kunt het ook proberen:
killall nodejs
Antwoord 12
U kunt
proberen
killall node
U kunt ook
proberen
killall nodejs
Antwoord 13
Gebruik het Windows-besturingssysteem.
Ik heb al het knooppuntsproces gedood en de app opnieuw gestart die het werkte.
Probeer
taskkill /im node.exe
Antwoord 14
Gebruik de volgende opdracht om knooppuntserver te doden en opnieuw te starten van Batch Bestand
@echo off
cd "D:\sam\Projects\Node"
taskkill /IM node.exe -F
start /min cmd /C "node index.js"
goto :EOF
Antwoord 15
In Windows-opdracht
Type Command Blow:
TAKKILL / F / IM NODE.EXE
Antwoord 16
Aangezien u Windows hebt opgegeven. Als u dit in een BAT-bestand wilt opnemen, wil u misschien niet dat het een fout genereert als het proces niet actief is.
Dus, om “error te voorkomen: het proces” node.exe “niet gevonden.”, kunt u een filter toevoegen:
TASKKILL /F /IM node.exe /FI "PID gt 0"
Antwoord 17
Druk op CMD of bash:
CTRL + C