it-swarm.com.de

so lösen Sie localhost von Error: hören Sie EADDRINUSE

ich teste einen Server, der in nodejs unter Windows 7 geschrieben ist. Wenn ich versuche, den Tester in der Befehlszeile auszuführen, erhalte ich die folgende Fehlermeldung

Error: listen EADDRINUSE
at errnoException (net.js:614:11)
at Array.0 (net.js:704:26)
at EventEmitter._tickCallback (node.js:192:40)

wie kann ich das Problem beheben, ohne neu starten zu müssen?

103
adam

Dies bedeutet, dass die Adresse verwendet wird, an die der Server gebunden werden soll. Versuchen Sie es mit einem anderen Port oder schließen Sie das Programm über diesen Port.

91
fent

Lauf:

ps -ax | grep node

Sie bekommen so etwas wie:

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

Dann mach:

kill -9 60778
153
Komposr

Mit dem folgenden Befehl erhalten Sie eine Liste der laufenden Knotenprozesse. 

ps | grep node

Um diesen Port freizugeben, stoppen Sie den Prozess mit den folgenden Anweisungen.

kill <processId>
35
wcurtis

Unter Linux (mindestens Ubuntu-Derivate)

killall node

ist einfacher als diese Form.

ps | grep <something>
kill <somepid>

Funktioniert auch nicht, wenn ein verwaistes Kind den Hafen hält. Tun Sie dies stattdessen:

netstat -punta | grep <port>

Wenn der Port festgehalten wird, sehen Sie Folgendes:

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

Jetzt töten für pid:

kill -9 <pid>
34
WolfReporter

Sie erhalten den Fehler EADDRINUSE, da der Port, den Ihre Anwendung verwenden möchte, von einem anderen Prozess belegt wird. Um diesen Port freizugeben, müssen Sie den Belegungsprozess beenden.

Da Sie sich unter Windows befinden, können Sie den Vorgang mit dem Befehl Prompt (cmd) beenden. Mit cmd können Sie die Prozess-ID (PID) der blockierenden Anwendung ermitteln. Sie benötigen die PID, um den Prozess zu beenden/zu beenden.

Hier ist eine Schritt-für-Schritt-Anleitung ...

  1. Suchen Sie nach allen Prozessen, die an einem angegebenen Port ausgeführt werden (in diesem Beispiel ist Port "3000"):

    netstat -ano | find ": 3000"

  2. Der Befehl netstat listet alle Prozesse auf, die am angegebenen Port ausgeführt werden. In der letzten Spalte der netstat-Ergebnisse sehen Sie die PIDs (in diesem Beispiel ist PID "8308"). Sie können mehr über ein bestimmtes PID erfahren, indem Sie den folgenden Befehl ausführen:

    tasklist/fi "pid eq 8308"

  3. Wenn Sie einen Prozess beenden möchten, können Sie dies mit dem folgenden Befehl tun, indem Sie PID verwenden (in diesem Beispiel ist PID "8308"):

    taskkill/pid 8308/f

Bildschirmfoto

 enter image description here

21

Wenn Sie einen Fehler erhalten, Fehler: EADDRINUSE abhören,

Führen Sie die folgenden Shell-Befehle aus:

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

Ich greped für 8080, weil ich weiß, dass mein Server an Port 8080 läuft. (static sagt mir, wenn ich es starte: "Serving". "Unter http://127.0.0.1:8080 ".) Möglicherweise haben Sie einen anderen Hafen suchen.

19
swathy valluri

angenommen, Ihr Server läuft unter 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)

danach kill -9 <pid>

im obigen Fall Sudo kill -9 11716

14
Arun Kasyakar

verwenden Sie den folgenden Befehl, um einen Prozess zu beenden, der an einem bestimmten Port - 3000 in diesem Beispiel ausgeführt wird 

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

Eine mögliche Lösung, die für mich funktionierte, war einfach das Fenster im Browser zu schließen, in dem das entsprechende " http: // localhost: 3000/ " - Skript ausgeführt wurde.

7
iloo

Wenn Sie einen Fehler erhalten

Fehler: EADDRINUSE abhören

Öffnen Sie die Eingabeaufforderung und geben Sie die folgenden Anweisungen ein:

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

starten Sie danach die Lückenschnittstelle neu.

Wenn Sie wissen möchten, welche Prozess-ID Phonegap verwendet, öffnen Sie TASK MANAGER, und sehen Sie sich die SpaltenüberschriftPIDan. Dort finden Sie die PID-Nummer.

6
Eshan Chattaraj

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

Außerdem möchten Sie möglicherweise einen einzelnen Prozess anvisieren, anstatt alle aktiven Prozesse blind zu beenden.

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

lsof -i tcp:8888

Dies wird etwas 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 tun Sie einfach (ps - eigentlich nicht. Bitte lesen Sie weiter unten):

kill -9 57385
4

sie können Ihren Port in app.js oder in Ihrer Projektkonfigurationsdatei ändern. 

standard ("Port", 80)

und um zu sehen, ob Port 80 bereits verwendet wird, können Sie dies tun 

netstat -antp | grep 80

netstat -antp | grep node

sie möchten vielleicht sehen, ob der Node-Prozess bereits läuft oder nicht. 

ps -ef | grep node

wenn Sie feststellen, dass es bereits läuft, können Sie es mit töten

Killall-Knoten

2
Adeel Ahmad

Ich habe zwei Server erstellt, die den gleichen Port 8081 abhören und mit demselben Code laufen, während ich lerne

Die erste Servererstellungs-Shud hat funktioniert .__ Die zweite Servererstellung ist mit EADDRINUSE fehlgeschlagen

node.js-Rückrufverzögerungen sind möglicherweise ein Grund dafür, dass weder der Server noch eine zweite Servererstellung ausgeführt hat und das Programm beendet wurde

2 Server-Problemhinweis, ich habe Folgendes erhalten: Wie kann ich den Fehler beheben?

Überprüfen Sie die Prozess-ID

Sudo lsof -i: 8081

Dann töte den bestimmten Prozess

Sudotötung -9 2925

 enter image description here 

1
Surender Kumar

Das funktioniert auf einem Mac:

Schritt 1. 

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

Mit dem obigen Befehl erhalten Sie die Prozess-ID (s), die aktuell den Port enthalten.

Schritt 2. 

Kill -9 <pid>
1
saran3h

Fehler: Hören Sie EADDRINUSE, um das Problem in Ubuntu zu lösen. Führen Sie das Terminal netstat -nptl aus. Nach diesem kill -9 {process-number} soll dieser Befehl den Node-Prozess beenden und Sie können versuchen, den Befehl node server.js erneut auszuführen

Ex 

hören Sie EADDRINUSE ::: 8080

netstat -nptl 

tcp6 0 0 ::: 9000 ::: * LISTEN 9660/Java
tcp6 0 0 ::: 5800 ::: * HÖREN -
tcp6 0 0 ::: 5900 ::: * HÖREN -
tcp6 0 0 ::: 8080 ::: * LISTEN 10401/Knoten
tcp6 0 0 ::: 20080 ::: * LISTEN 9660/Java
tcp6 0 0 ::: 80 ::: * HÖREN -
tcp6 0 0 ::: 22 ::: * HÖREN -
tcp6 0 0 ::: 10137 ::: * LISTEN 9660/Java 

töte -9 10401

1
navnit kapadiya

töten Sie einfach den Knoten as pkill -9 Knotenim Terminal von ubantu als Startknoten 

0
Aditya Prakash

Ich habe den Befehl netstat -ano | grep "portnumber" verwendet, um die Portnummer/PID für diesen Prozess aufzulisten. Dann können Sie taskkill -f //pid 111111 verwenden, um den Prozess abzubrechen, wobei der letzte Wert die PID ist, die Sie aus dem ersten Befehl finden.

Ein Problem, auf das ich manchmal stoße, ist, dass der Knoten auch nach dem Beenden des Prozesses neu aufgebaut wird. Daher muss ich den guten alten Task-Manager verwenden, um den Knotenprozess manuell zu beenden.

0
davida227

ps -ef | grep node find app.js finden, kill pid von app.js

0
megan5

Um den Knotenserver zu beenden, führen Sie zuerst diesen Befehl in Ihrem Terminal aus: 

  1. top
  2. Öffnen Sie ein anderes Fenster und kopieren Sie den Server id aus dem vorherigen Fenster: PID number -9 killso. Jetzt haben Sie Ihren Knotenserver abgebrochen.
0
Mohammed Dwina

In meinem Fall hat der Neustart des Computers das Problem behoben.

0
Balram Singh

Für alle, die alle oben genannten Schritte ausgeführt haben, aber den Rouge-Vorgang immer noch nicht finden können, versuchen Sie es erneut, stellen Sie jedoch sicher, dass Sie "Sudo" vor den Befehlen einfügen.

0
MMMTroy

Ich habe Node Red auf meinem Mac und meinem Raspberry Pi installiert. Hatte das gleiche Problem und "Killall" zu helfen, half nicht. Nachdem ich den Raspberry Pi heruntergefahren und meinen Computer neu gestartet hatte, funktionierte er einwandfrei. 

0
alkopop79

Möglicherweise haben Sie versucht, den Befehl npm start auf zwei verschiedenen Registerkarten auszuführen. Sie können npm start nicht ausführen, wenn er bereits in einem der Tabs ausgeführt wird.

0
Bhudke Aakshayy

Sie müssen den Port beenden, indem Sie versuchen, den folgenden Befehl auf dem Terminal zu verwenden

$ Sudo killall -9 nodejs
0
Shivam Kohli

Wenn Sie die Benutzeroberfläche bevorzugen, suchen Sie den Prozess Node.js im Windows Task Manager und beenden Sie ihn.

0
PolinaC