So beheben Sie Fehler: Hören Sie EADDRINUSE, während Sie nodejs verwenden?

466

Wenn ich einen Server mit Port 80 betreibe und versuche, xmlHTTPrequest zu verwenden, wird folgende Fehlermeldung angezeigt :Error: listen EADDRINUSE

Warum ist es für nodejs ein Problem, wenn ich eine Anforderung ausführen möchte, während ich einen Server auf Port 80 ausführe? Für die Webbrowser ist das kein Problem: Ich kann im Internet surfen, während der Server läuft.

Der Server ist:

  net.createServer(function (socket) {
    socket.name = socket.remoteAddress + ":" + socket.remotePort;
    console.log('connection request from: ' + socket.remoteAddress);
    socket.destroy();
  }).listen(options.port);

Und die Anfrage:

var xhr = new XMLHttpRequest();

xhr.onreadystatechange = function() {
    sys.puts("State: " + this.readyState);

    if (this.readyState == 4) {
        sys.puts("Complete.\nBody length: " + this.responseText.length);
        sys.puts("Body:\n" + this.responseText);
    }
};

xhr.open("GET", "http://mywebsite.com");
xhr.send();
Danny Fox
quelle
Sind Sie sicher, dass options.port als 80 definiert ist? Läuft der XHR-Code in einem Browser? Können Sie "nc -l 0.0.0.0 80" ausführen, wenn dieser Server nicht ausgeführt wird?
Timothy Meade
Siehe ein ähnliches Problem unter stackoverflow.com/questions/8553957/…
Manohar Reddy Poreddy
Auf welchem ​​System bist du? Einige Systeme benötigen sudo, wenn Sie Ports unterhalb eines bestimmten Schwellenwerts abhören möchten.
Kebman
Dieses Problem tritt auf, weil Sie entweder Ihren Server auf diesem Port ausgeführt haben und diesen Port nicht geschlossen haben. Der Fehler besagt eindeutig, dass der Port bereits verwendet wird. Dies geschieht bei mir, wenn ich ein neues Projekt in vs Code öffne, ohne andere Projekte zu schließen (Öffnen) per Drag & Drop)
Ashad Nasim

Antworten:

412

EADDRINUSEbedeutet, dass die Portnummer listen(), an die der Server gebunden werden soll, bereits verwendet wird.

In Ihrem Fall muss also bereits ein Server auf Port 80 ausgeführt werden.

Wenn auf diesem Port ein anderer Webserver ausgeführt wird, müssen Sie node.js hinter diesen Server stellen und ihn durch diesen übertragen.

Sie sollten nach dem listeningEreignis wie diesem suchen, um festzustellen, ob der Server wirklich zuhört:

var http=require('http');

var server=http.createServer(function(req,res){
    res.end('test');
});

server.on('listening',function(){
    console.log('ok, server is running');
});

server.listen(80);
Stewe
quelle
1
Ich betreibe nur diesen Server. Bevor ich den Server starte, funktioniert die xmlhttprequest. Nachdem ich den Server an Port 80 gestartet habe, funktioniert der Server auch einwandfrei. Wenn ich jedoch nach dem Start des Servers eine xmlhttprequest durchführe, wird dieser Fehler angezeigt.
Danny Fox
6
Wird dies nicht immer noch einen Fehler auslösen, wenn der Server bereits zuhört?
Tryse
1
Für mich wurde dies durch Skype
Beep
559

Was mir wirklich geholfen hat war:

killall -9 node

Dies wird jedoch einen Systemprozess beenden.

Mit

ps ax

Sie können überprüfen, ob es funktioniert hat.

Patrick
quelle
1
Auch für mich. In meinem Fall habe ich die Listen-Funktion nur zweimal ausgeführt und den Fehler in der zweiten
Vabada
2
In einem verwandten Hinweis können Sie auch lesen, wann ich nicht einen Prozess kil -9 .
Nobita
12
Das Problem hier ist, dass ihr den Knotenprozess nach dem ersten Lauf nicht ordnungsgemäß verlässt. Daher ist der Knoten weiterhin an diesen Port gebunden. ps aux | grep nodewürde das zeigen. Beenden Sie die Anwendung mit STRG + C, anstatt die Anwendung mit STRG + Z zu beenden . Dadurch wird die Anwendung ordnungsgemäß beendet und die Portbindung wird entfernt.
Riser101
22
Über 150 Up-Votes für eine Lösung, die dem Schlagen Ihrer Software mit einem Hammer entspricht.
LeeGee
1
Diese Lösung ist ziemlich problematisch, da das Flag -9 den Prozess abbricht, ohne den Speicher freizugeben. Sie sollten dies wirklich nur als letzte Lösung verwenden.
Yaki Klein
279

Das oben erwähnte killall -9 node, von Patrick vorgeschlagene Verfahren funktioniert wie erwartet und löst das Problem. Möglicherweise möchten Sie jedoch den Bearbeitungsteil dieser Antwort darüber lesen, warum dies kill -9möglicherweise nicht der beste Weg ist.

Darüber hinaus möchten Sie möglicherweise auf einen einzelnen Prozess abzielen , anstatt alle aktiven Prozesse blind zu beenden .

In diesem Fall rufen Sie zuerst die Prozess-ID (PID) des Prozesses ab, der an diesem Port ausgeführt wird (z. B. 8888):

lsof -i tcp:8888

Dies wird so etwas wie zurückgeben:

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

Dann machen Sie einfach (ps - eigentlich nicht . Bitte lesen Sie weiter unten):

kill -9 57385

Sie können ein bisschen mehr über das lesen hier .

EDIT: Ich habe heute über ein ziemlich verwandtes Thema gelesen und bin auf diesen interessanten Thread gestoßen, warum ich keinen kill -9Prozess machen sollte .

Im Allgemeinen sollten Sie kill -15 vor kill -9 verwenden , um dem Zielprozess die Möglichkeit zu geben, nach sich selbst aufzuräumen. (Prozesse können SIGKILL nicht abfangen oder ignorieren, aber sie können und werden SIGTERM häufig abfangen.) Wenn Sie dem Prozess keine Chance geben, seine Arbeit zu beenden und zu bereinigen, bleiben möglicherweise beschädigte Dateien (oder ein anderer Status) zurück dass es nach dem Neustart nicht verstehen kann.

Wie bereits erwähnt, sollten Sie den obigen Prozess besser beenden mit:

kill -15 57385

BEARBEITEN 2 : Wie in einem Kommentar hier oft erwähnt, ist dieser Fehler eine Folge davon, dass ein Prozess nicht ordnungsgemäß beendet wird. Das bedeutet, dass viele Leute einen Knotenbefehl (oder einen anderen) mit STRG + Z beenden . Die richtige Methode zum Stoppen eines laufenden Prozesses besteht darin, den Befehl STRG + C auszugeben, der einen sauberen Exit ausführt.

Wenn Sie einen Prozess auf die richtige Weise beenden, wird dieser Port beim Herunterfahren freigegeben. Auf diese Weise können Sie den Prozess neu starten, ohne sich die Mühe machen zu müssen, ihn selbst zu beenden, bevor Sie ihn erneut ausführen können.

Nobita
quelle
Wo soll ich diesen Befehl ausführen? An der Eingabeaufforderung? Auf der NPM-Konsole?
Ulysses Alves
@UlyssesAlves öffnet einfach ein Terminalfenster und beendet den Prozess von dort aus.
Nobita
@Nobita Funktioniert das unter Windows? Jetzt ist mir klar, dass es sich möglicherweise um einen MAC OS-Befehl handelt. Wie auch immer, ich habe meinen PC neu gestartet und diesen Fehler nicht mehr erhalten. Ich denke, eine andere Anwendung verwendete denselben Portknoten, den sie zu verwenden versuchte.
Ulysses Alves
2
pgrep node Zeigt an, ob ein Knotenprozess auf Ihnen weggelaufen ist. pkill nodewird sie töten.
Josh.F
3
Nicht für Windows, Leute - Sie müssen einen anderen Port ausprobieren oder den Computer neu starten: P
Tom Stickel
62

Nur einen Kopf hoch, Skype überwacht manchmal Port 80 und verursacht daher diesen Fehler, wenn Sie versuchen, Port 80 von Node.js oder einer anderen App abzuhören.

Sie können dieses Verhalten in Skype deaktivieren, indem Sie auf die Optionen zugreifen und auf Erweitert -> Verbindung -> Port 80 verwenden klicken (Deaktivieren Sie diese Option).

Deaktivieren Sie die Verwendung von Skype-Port 80

PS Vergessen Sie nach dieser Änderung nicht, Skype neu zu starten!

Rob Evans
quelle
14
PS Vergessen Sie nach dieser Änderung nicht, Skype neu zu starten!
Rob Evans
16
Dies ist einer der verblüffendsten Designfehler, die ich je gesehen habe. Wie verrückt sind die Skype-Entwickler, die sie jemals in Betracht ziehen würden, 80 oder 443 zu übernehmen?
AJB
5
Big +1 für deine Debugging-Fähigkeiten, Rob.
AJB
@AJB Sie haben versucht, Firewalls zu durchsuchen, die den ausgehenden Datenverkehr auf http-Anforderungen beschränken. Wenn die Firewalls jedoch keine DPI verwenden, führen Sie einfach eine grundlegende Portblockierung durch. Trotzdem ... es ist ein bisschen albern, dies standardmäßig zu aktivieren!
Rob Evans
Ja, das kam mir nach einigem Überlegen, warum sie das tun würden. Trotzdem ein wirklich hässlicher Kludge. Und die Idee, dass es standardmäßig aktiviert ist, ist einfach arrogant.
AJB
39

Sie sollten versuchen, den Prozess zu beenden, der Port 80 überwacht.

Killall beendet alle laufenden Knoten-Apps. Vielleicht möchten Sie das nicht tun. Mit diesem Befehl können Sie nur die eine App beenden, die einen bekannten Port überwacht.

Wenn Sie Unix verwenden, versuchen Sie diesen Befehl:

sudo fuser -k 80/tcp    
Yaki Klein
quelle
1
Danke Yaki. Killall Node ist für mich ausgefallen, aber das hat funktioniert.
Pat M
Vielen Dank! killall und lsof -i haben bei mir nicht funktioniert, aber das hat funktioniert.
karfus
1
Möglicherweise möchten Sie nicht alle laufenden Knoten-Apps beenden.
Yaki Klein
28

Fehlergrund: Sie versuchen, die Besetzt zu verwendenport number

Zwei mögliche Lösungen für Windows / Mac

  1. Kostenlose aktuell verwendete Portnummer
  2. Wählen Sie eine andere Portnummer für Ihr aktuelles Programm


1. Freie Portnummer

Windows

1. netstat -ano | findstr :4200
2. taskkill /PID 5824 /F

Geben Sie hier die Bildbeschreibung ein

Mac

Sie können netstat versuchen

netstat -vanp tcp | grep 3000

Verwenden Sie für OSX El Capitan und höher (oder wenn Ihr netstat -p nicht unterstützt) lsof

sudo lsof -i tcp:3000

Wenn sich Ihr Problem dadurch nicht beheben lässt, können MacBenutzer auf die vollständige Diskussion zu diesem Problem verweisen. Suchen (und Beenden) des Prozesses 3000 zum Sperren von Port 3000 auf dem Mac


2. Portnummer ändern?

Windows

set PORT=5000

Mac

export PORT=5000
WasiF
quelle
Sie können in einem Befehl auch in Windows tun:netstat -ona | findstr ".0:PORT +0.0.0.0:0 +LISTENING" | for /f "tokens=5" %t in ('more') do taskkill /PID:%t /f
Z. Khullah
27

Unter einer Controller-Umgebung können Sie Folgendes verwenden:

pkill node Bevor Sie Ihr Skript ausführen, sollten Sie den Job erledigen.

Denken Sie daran, dass dieser Befehl alle töten wird node Prozesse möglicherweise richtig, wenn Sie einen Container haben, in dem nur eine Instanz ausgeführt wird. Sie haben eine solche Umgebung, in der Sie dies garantieren können.

In jedem anderen Szenario empfehle ich, einen Befehl zu verwenden, um eine bestimmte Prozess-ID oder einen bestimmten Namen zu beenden, die Sie gefunden haben, indem Sie programmgesteuert danach suchen. Wenn Ihr Prozess aufgerufen wird, können Sie beispielsweise Node-Server-1 ausführen pkill node-server-1.

Diese Ressource kann hilfreich sein, um Folgendes zu verstehen: https://www.thegeekstuff.com/2009/12/4-ways-to-kill-a-process-kill-killall-pkill-xkill/

Javier Cobos
quelle
2
pgrep nodevor der Hand, wenn Sie ein wenig vorsichtig sein wollen und sehen wollen, welche nodeProzesse laufen
Josh.F
1
Total!, Ich habe gesprochen, falls es sich um einen Container oder einen sehr kontrollierten Ort für den Prozess handelt.
Javier Cobos
Dies ist eine großartige Antwort, die ich sagen werde, als andere, die oben angegeben wurden. Jeder, bitte stimmen Sie es ab.
Jitendra Pawar
@JavierCobos: Wenn Sie innerhalb eines Containers oder eines ähnlichen kontrollierten Raums gesprochen haben, fügen Sie diese Informationen bitte der Antwort selbst hinzu. Viele Menschen befinden sich nicht in solchen Umgebungen, insbesondere auf einer Entwicklungsmaschine, und dies könnte unbeabsichtigt Konsequenzen haben. Downvoting, freut sich aber, die Abstimmung mit angemessener Klarstellung zu ändern.
Lindes
1
Viele werden ... aber als jemand, der viel Zeit damit verbringt, Nachwuchsentwickler auszubilden, und sogar über diesen Kontext hinaus, kann ich Ihnen sagen, dass sehr viele Leute Antworten auf Stack Overflow verwenden, ohne wirklich zu verstehen, was sie tun. .. sie sind nur mit einem Problem konfrontiert und sehen etwas als Lösung für das, was ihr Problem zu sein scheint, und sie laufen damit. Also ... ich persönlich wünsche mir, dass die Seite gute Erklärungen gibt und gute allgemeine Gewohnheiten fördert. Da komme ich also her. Ich weiß jedoch, dass dies nicht die einzige Perspektive ist. :)
Lindes
16

Ihre Anwendung wird bereits auf diesem Port 8080 ausgeführt. Verwenden Sie diesen Code, um den Port zu beenden und Ihren Code erneut auszuführen

sudo lsof -t -i tcp:8080 | xargs kill -9
Ranjith
quelle
Die Frage bezieht sich auf Port 80, nicht auf 8080. Auch wenn dies wahrscheinlich dazu beitragen würde, einen störenden Prozess auf Port 8080 zu beseitigen, ist die Verwendung kill -9mit ziemlicher Sicherheit übertrieben und meiner Meinung nach ein schrecklicher Ratschlag, den man ohne besondere Warnungen geben sollte es. Nur killwürde wahrscheinlich den Trick tun, und wirklich, das grundlegende Problem in dieser Frage ist, glaube ich, dass sie wieder laufen einen sind versucht , Server immer und immer wieder, so dass dies nur ein Hack, kein fix. Sie müssen besser verstehen, was los ist, was diese Antwort nicht wirklich liefert.
Lindes
15

Eine andere Sache, die diesen Fehler verursachen kann, sind zwei HTTP-Server im selben Knotencode. Ich habe Express 2 auf Express 3 aktualisiert und hatte diesen ...

http.createServer(app).listen(app.get('port'), function(){            
  console.log('Express server listening on port ' + app.get('port')); 
});        

// tons of shit.

http.createServer(app).listen(app.get('port'), function(){            
  console.log('Express server listening on port ' + app.get('port')); 
});                                                                   

Und es hat diesen Fehler ausgelöst.

Evan Carroll
quelle
14

Das funktioniert bei mir (ich benutze Mac). Führen Sie diesen Befehl aus

lsof -PiTCP -sTCP:LISTEN

Daraufhin wird eine Liste der Ports angezeigt, die Ihr Syetem verwendet. Finden Sie heraus, PIDdass Ihr Knoten ausgeführt wird

COMMAND     PID          USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
node      17269 hientrq   16u  IPv6 0xc42959c6fa30c3b9      0t0  TCP *:51524 (LISTEN)
node      17269 hientrq   19u  IPv4 0xc42959c71ae86fc1      0t0  TCP localhost:1337 (LISTEN)

und Renn kill -9 [YOUR_PID]

hientrq
quelle
11

EADDRINUSEbedeutet, dass der Port (den wir in der Knotenanwendung abhören wollen) bereits verwendet wird. Um dies zu überwinden, müssen wir identifizieren, welcher Prozess mit diesem Port ausgeführt wird.

Zum Beispiel, wenn wir versuchen, unsere Knotenanwendung im 3000-Port abzuhören. Wir müssen überprüfen, ob dieser Port bereits von einem anderen Prozess verwendet wird.

Schritt 1:

$sudo netstat -plunt |grep :3000

Dass der obige Befehl das folgende Ergebnis liefert.

tcp6       0      0 :::3000                 :::*                    LISTEN      25315/node

Schritt 2:

Jetzt hast du die Prozess-ID (25315). Töte diesen Prozess.

kill -9 25315

Schritt 3:

npm run start

Hinweis: Diese Lösung für Linux-Benutzer.

Thavaprakash Swaminathan
quelle
9
lsof -i:3000;
kill -9 $(lsof -t -i:3000);
// 3000 is a your port
// This "lsof -i:3000;" command will show PID 
kill PID 
ex: kill 129393
Pramod Jain
quelle
3
Bitte fügen Sie Ihren Antworten mehr Kontext hinzu, damit zukünftige Leser den Code / Befehl besser verstehen.
Milo
8

sudo kill $ (sudo lsof -t -i: 80)

für Force Kill

sudo kill -9 $ (sudo lsof -t -i: 80)

Verwenden Sie oben cmd, um einen bestimmten Port zu beenden und dann Ihren Server auszuführen

Marla Tarakeswara Rao
quelle
8

Versuchen Sie beide Befehle und es wird der gesamte Knotenprozess gestoppt.

killall 9 node
pkill node
npm start 
Anupam Maurya
quelle
1
Dieser Hack hat mir geholfen, viel Zeit zu sparen, danke
Anoop PS
5

Dieser Fehler tritt auf, wenn ein Prozess an einem Port ausgeführt wird, an dem Sie Ihre Anwendung ausführen möchten.

Wie wird der Prozess auf diesem Port ausgeführt? => Befehl: sudo netstat -ap | grep: 3000

Ausgabe: Sie erhalten die Prozessinformationen, die diesen Port verwenden

tcp 0 0 IP-Adresse: 3000 : LISTEN 26869 / node

Jetzt können Sie diesen Prozess abbrechen sudo kill -9 26869

WAQAR SHAIKH
quelle
Überprüfte alle Antworten. Aber du löst mein Problem.
Rahul
5

Im folgenden Befehl ersetzen Sie Ihre portNumber

sudo lsof -t -i tcp:portNumber | xargs kill -9
ramachandrareddy reddam
quelle
5

EADDRINUSE bedeutet, dass der Port Ihrer nodejs-App bereits verwendet wird.

  • Jetzt haben Sie den Prozess / die App, die auf diesem Port ausgeführt wird, beendet.
  • Finden Sie die Prozess-ID der App durch:

lsof -i tcp: 3000

  • Jetzt erhalten Sie die Prozess-ID.
  • Führen Sie Folgendes aus:

kill -9 processId

Sidharth Srivastava
quelle
4

Es gibt eine Möglichkeit, den Prozess mit dem Task-Manager zu beenden:

Beachten Sie, dass diese Lösung nur für Windows gilt

  1. Gehen Sie zum Task-Manager (oder verwenden Sie die Verknüpfung Ctrl+ Shift+ Esc).

  2. Suchen Sie unter "Hintergrundprozesse" nach "Node.js" -Prozessen und beenden Sie sie (klicken Sie mit der rechten Maustaste darauf und wählen Sie "Aufgabe beenden").

Geben Sie hier die Bildbeschreibung ein

  1. Jetzt sollten Sie wieder von vorne beginnen können
Jee Mok
quelle
Für Mac-Benutzer: 1. Starten Sie 'Activity Monitor'. 2. Suchen Sie in der Suchleiste oben rechts nach 'Knoten'. 3. Doppelklicken Sie auf den Knotenprozess und beenden Sie ihn. Sie sind fertig !!!! Viel Spaß beim Codieren.
Apogee
3

Ich habe diesen Fehler bereits (im Knoten) bei http.client gesehen, und wie ich mich erinnere, hatte das Problem damit zu tun, dass der httpClient nicht initialisiert oder schlechte Optionen bei der httpClient-Erstellung und / oder in der URL-Anforderung festgelegt wurden.

ControlAltDel
quelle
3

Ich habe auch das gleiche Problem, und ich schließe einfach das Terminal und öffne ein neues Terminal und starte

node server.js

nochmal. Das funktioniert bei mir, einige Zeit muss nur ein paar Sekunden warten, bis es wieder funktioniert.

Dies funktioniert jedoch nur auf einem Entwicklercomputer anstelle einer Serverkonsole.

robinclark007
quelle
3

Fehler: listen EADDRINUSE bedeutet, dass der Port, den Sie Ihrem Anwendungsserver zuweisen / binden möchten, bereits verwendet wird. Sie können Ihrer Anwendung entweder einen anderen Port zuweisen.

Oder wenn Sie der App denselben Port zuweisen möchten. Beenden Sie dann die Anwendung, die an Ihrem gewünschten Port ausgeführt wird.

Suchen Sie für eine Knotenanwendung die Prozess-ID für die Knotenanwendung wie folgt:

ps -aux | grep node

Nachdem Sie die Prozess-ID erhalten haben, tun Sie dies

kill process_id
Parth Vyas
quelle
-aux unter Windows 10?
Tom Stickel
No -aux ist für Linux-basierte Systeme. Bei Windows-basierten Systemen können Sie das System nach dem gewünschten Knotenprozess suchen und beenden.
Parth Vyas
2

Auf Debian habe ich herausgefunden, dass auf Port 80 ausgeführt werden muss. Sie müssen den Befehl als root ausgeben, dh

sudo node app.js

Ich hoffe, es hilft

Khurram Ijaz
quelle
2

In meinem Fall wurde Apache HTTP Server auf Port 80 ausgeführt. Ich habe es gelöst, indem ich den Befehl als root ausgegeben habe

sudo killall httpd

Aktualisieren

Wenn Jenkin auf Ihrem Mac installiert ist und ausgeführt wird;

  1. Sie können es mit überprüfen sudo lsof -i tcp:8080
  2. Wenn Ja und Sie Jenkins nur einmal stoppen möchten, führen Sie Folgendes aus: sudo launchctl unload /Library/LaunchDaemons/org.jenkins-ci.plist
Chotala Paresh
quelle
2

Es scheint, dass ein anderer Node ng Serve-Prozess ausgeführt wird. Überprüfen Sie dies, indem Sie dies in Ihre Konsole (Linux / Mac) eingeben:

ps aux|grep node

und beenden Sie es mit:

kill -9 <NodeProcessId>

ODER alternativ verwenden

ng serve --port <AnotherFreePortNumber>

um Ihr Projekt auf einem freien Hafen Ihrer Wahl zu bedienen.

Birol Efe
quelle
1

Während Sie den NODE_PORT beenden, wird möglicherweise Ihr Chrome-Prozess oder alles, was denselben Port abhört, abgebrochen, und das ist ärgerlich.

Dieses Shell-Skript kann hilfreich sein - in meinem Fall ist der Port 1337, aber Sie können ihn jederzeit ändern

# LOGIC

CHROME_PIDS=`pidof chrome`
PORT_PIDS=`lsof -t -i tcp:1337`

for pid in $PORT_PIDS
do

if [[ ${CHROME_PIDS} != *$pid* ]];then

    # NOT FOUND IN CHROME PIDS

    echo "Killing $pid..."
    ps -p "$pid"

    kill -kill "$pid"
    fi

done

sails lift
# OR 'node app' OR whatever that starts your node

exit
Nizar Blond
quelle
1

In meinem Fall verwende ich ein Webhosting, aber es ist dasselbe wie beim lokalen Host. Ich habe Folgendes verwendet:

ps -aef | grep 'node' 

Um den Knotenprozess zu beobachten, zeigt die Konsole den Prozess mit PID an. Um den Prozess abzubrechen, müssen Sie diesen Befehl verwenden:

kill -9 PID

Dabei ist PID die Prozess-ID aus dem obigen Befehl.

Jorge Mejia
quelle
1

Zwei Server können nicht denselben Port überwachen. Überprüfen Sie daher, ob andere Server denselben Port überwachen. Überprüfen Sie auch, ob der Browser synchronisiert ist, wenn er auf demselben Port ausgeführt wird

Schwarzer Falke
quelle
1

Für andere Personen unter Windows 10 mit Knoten als localhost und läuft auf einem Port wie 3500, nicht 80 ...

Was funktioniert nicht:

killall    ?  command not found
ps -aux | grep 'node'     ?     ps:  user x unknown 

Was Informationen anzeigt, aber immer noch nicht funktioniert:

 ps -aef | grep 'node'
 ps ax
 kill -9 61864

Was funktioniert:

Git Bash oder Powershell unter Windows

  net -a -o | grep 3500   (whatever port you are looking for) 

Beachten Sie die PID (ganz rechts), die
ich nicht killallzur Arbeit bringen konnte ... also

  1. Öffnen Sie Ihren Task-Manager
  2. Klicken Sie auf der Registerkarte Prozesse mit der rechten Maustaste auf Name oder eine beliebige Spalte und wählen Sie PID einschließen
  3. Nach PID sortieren, dann mit der rechten Maustaste auf die rechte PID klicken und auf Aufgabe beenden klicken.

Nach dieser nicht so lustigen Übung unter Windows wurde mir klar, dass ich den Task-Manager verwenden und die Node-Engine finden und einfach beenden kann.

Zu Ihrer Information, ich habe Visual Studio Code verwendet, um Node auf Port 3500 auszuführen, und ich verwende die Git Bash-Shell im VS-Code. Ich hatte anmutig mit Strg + C beendet, aber manchmal tötet dies es nicht. Ich möchte meinen Port nicht ändern oder neu starten, damit dies funktioniert. Hoffentlich hilft es anderen. Ansonsten ist es Dokumentation für mich.

Tom Stickel
quelle
1

Für Windows-Benutzer führen Sie den folgenden Befehl im PowerShell-Fenster aus, um alle Knotenprozesse abzubrechen.

Stop-Process -processname node
rawel
quelle
1

Die Option, die für mich funktioniert:

Lauf:

ps -ax | grep node

Sie erhalten so etwas wie:

 8078 pts/7    Tl     0:01 node server.js
 8489 pts/10   S+     0:00 grep --color=auto node    
 kill -9 8078
Prakash Tank
quelle