Ich arbeite zum ersten Mal mit Node.js und bin auf dieses Problem gestoßen:
Ich habe einen Knotenserver über das Plugin einer IDE gestartet. Leider kann ich das IDE-Terminal nicht verwenden. Also habe ich versucht, das Skript über die Befehlszeile auszuführen.
Dies ist das Problem - ich verwende das Express-Modul und meine App überwacht einen Port (8080). Wenn ich die App über die Befehlszeile starte, wird der folgende Fehler ausgegeben:
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)
Obwohl ich nicht ganz sicher bin, was dieser Fehler sein könnte, habe ich angenommen, dass die App einen Port überwacht, der bereits verwendet wird. So tat ich:
netstat -an
Ich kann es sehen
TCP 0.0.0.0:8080 0.0.0.0:0 LISTENING
Dies liegt daran, dass der Knotenserver bereits gestartet wurde, als ich versuchte, ihn über die IDE zu starten.
Ich möchte wissen, wie ich alle Serverinstanzen stoppen kann. Auch wenn Sie mir sagen können, wie ich erkennen kann, was auf einem Port läuft, und ihn töten kann.
Antworten:
Windows-Maschine:
Wenn Sie einen Node.js-Server beenden müssen und keine anderen Node-Prozesse ausgeführt werden, können Sie Ihren Computer anweisen, alle genannten Prozesse abzubrechen
node.exe
. Das würde so aussehen:Wenn die Prozesse weiterhin bestehen, können Sie das Beenden der Prozesse durch Hinzufügen des
/f
Flags erzwingen :Wenn Sie eine genauere Steuerung benötigen und nur einen Server beenden müssen, der an einem bestimmten Port ausgeführt wird, können
netstat
Sie die Prozess-ID ermitteln und anschließend ein Kill-Signal an ihn senden. In Ihrem Fall, in dem sich der Port befindet8080
, können Sie Folgendes ausführen:Die fünfte Spalte der Ausgabe ist die Prozess-ID:
Sie könnten dann den Prozess mit beenden
taskkill /pid 14828
. Wenn sich der Prozess nicht beenden lässt, fügen Sie/f
dem Befehl einfach den Parameter (force) hinzu.Linux-Maschine:
Der Prozess ist fast identisch. Sie können entweder alle auf dem Computer ausgeführten Knotenprozesse beenden (verwenden,
-$SIGNAL
wenn diesSIGKILL
nicht ausreicht):Oder
netstat
Sie können auch die PID eines Prozesses ermitteln, der einen Port überwacht:Die Prozess-ID ist in diesem Fall die Nummer vor dem Prozessnamen in der sechsten Spalte, die Sie dann an den
kill
Befehl übergeben können:Wenn der Prozess nicht beendet werden soll , verwenden Sie einfach das
-9
Flag, das a istSIGTERM
und nicht ignoriert werden kann:quelle
process.exit()
In Ihrer Anwendung wird die NodeJS-Instanz geschlossen.killall node
in bash würde alle NodeJS-Instanzen töten, die auf Ihrem Computer ausgeführt werden.taskkill /IM node.exe
. Alle genannten Prozesse werden abgebrochennode.exe
.Der schnellste Weg ist
Funktioniert mit Linux, OS X.
quelle
node: no process found
Auch wenn ich nach Knotenprozessen suche, die auf dem bestimmten Port ausgeführt werden, hat die Prozess-ID-
anstelle einer Nummer selbst.Sie können
lsof
den Prozess abrufen, der an den erforderlichen Port gebunden ist.Leider scheinen die Flags je nach System unterschiedlich zu sein, aber unter Mac OS X können Sie sie ausführen
Zum Beispiel bekomme ich auf meinem Computer so etwas wie:
Die zweite Nummer ist die PID und der Port, den sie hören, befindet sich rechts vor "(LISTEN)". Finden Sie die Schurken-PID und
kill -9 $PID
beenden Sie mit extremen Vorurteilen.quelle
Windows & GitBash Terminal Ich musste diesen Befehl im Windows / Webstorm / GitBash Terminal verwenden
quelle
Wenn Sie einen bestimmten Knotenprozess beenden möchten, können Sie zur Befehlszeilenroute gehen und Folgendes eingeben:
um eine Liste aller Knotenprozess-IDs zu erhalten. Jetzt können Sie Ihre Prozess-ID (pid) abrufen und dann Folgendes tun:
und wenn Sie alle Knotenprozesse beenden möchten, gehen Sie wie folgt vor:
-9 Schalter ist wie Endaufgabe unter Windows. Dadurch wird der Prozess beendet. du kannst tun:
um alle Schalter des Kill-Befehls und ihre Kommentare zu sehen.
quelle
Sie können dies versuchen:
quelle
Linux
Um deine Freunde zu beeindrucken
Aber an diesen wirst du dich erinnern
quelle
Sie könnten auch versuchen:
killall nodejs
quelle
Wenn Sie Windows verwenden, gehen Sie wie folgt vor:
1) Öffnen Sie den Task-Manager und suchen Sie nach diesem Prozess: http://prntscr.com/kv3uqx
2) Dann einfach mit der rechten Maustaste klicken und "Aufgabe beenden".
3) Das war's, jetzt werden alle npm-Befehle von Anfang an ausgeführt.
Hoffe es hilft jemandem!
Prost
quelle
Multiplattform, stabil, beste Lösung:
Verwenden Sie fkill , um den Prozess zu beenden , der Ihren Port beansprucht :
Um fkill zu installieren, verwenden Sie den folgenden Befehl: npm i -g fkill
quelle
Du kannst es versuchen
Sie können es auch versuchen
quelle
es funktioniert gut in Windows 10
quelle
Ich benutze Windows Betriebssystem.
Ich habe den gesamten Knotenprozess beendet und die funktionierende App neu gestartet.
Versuchen
quelle
Verwenden Sie den folgenden Befehl, um den Knotenserver aus der Batchdatei zu beenden und neu zu starten
quelle
in Windows Befehl Typ Befehl Schlag:
taskkill / f / im node.exe
quelle
Drücken Sie cmd oder bash: Strg + C.
quelle