wake-up-neo.com

Node.js Port 3000 wird bereits verwendet, ist es aber nicht?

Ich arbeite seit ein paar Wochen mit einem node.js-Projekt und es hat großartig funktioniert. Normalerweise verwende ich 'npm start', um meine App auszuführen und in einem Browser unter localhost, Port 3000 anzuzeigen.

Heute habe ich beim Verwenden von npm start die folgende Fehlermeldung erhalten:

Server started on port 3000                                                                                                                                                                                         
Port 3000 is already in use 

Ich habe den Ressourcenmonitor überprüft und ich habe keinen anderen Prozess, der auf Port 3000 ausgeführt wird. Warum wird diese Fehlermeldung angezeigt?

In meiner app.js habe ich den folgenden Code, um den Port einzustellen ... ist das falsch? Es hat gut funktioniert, also bin ich mir nicht sicher, was ich falsch mache.

// Set Port
app.set('port', (process.env.PORT || 3000));
app.listen(app.get('port'), function() {
    console.log('Server started on port '+app.get('port'));
});

Danke für die Hilfe! 

BEARBEITEN: Ich habe versucht, netstat und TCPView auszuführen, um zu überprüfen, welcher Prozess den Port verwendet, aber der Port wird nicht verwendet. Ich habe auch versucht, meinen Laptop neu zu starten, erhalte aber immer noch die gleiche Fehlermeldung. 

35
user2573690

Sie können danach suchen, wie Sie diesen Prozess beenden.

Für Linux/Mac OS-Suche (Sudo) führen Sie dies im Terminal aus:

$ lsof -i tcp:3000
$ kill -9 PID

Unter Windows:

netstat -ano | findstr :3000
tskill typeyourPIDhere 

tskill für taskkill in git bash ändern

81
Animesh Singh

Bei Windows würde der Task-Manager auf jeden Fall einen Knotenprozess anzeigen, der ausgeführt wird. Versuchen Sie, den Prozess zu beenden, um das Problem zu lösen.

14
P.V. THOMAS

Manchmal passiert es, als @sova vorgeschlagenDies passiert manchmal bei mir, EADDR im Einsatz. Normalerweise wird im Hintergrund ein Terminalfenster ausgeblendet, in dem die App noch ausgeführt wird.Und das stimmt auch bei mir.

Wenn Sie das Terminal für längere Zeit geöffnet haben, haben Sie Recht, Sie haben den Vorgang abgebrochen. Aber manchmal hörte es nicht im Hintergrund auf.Die beste Lösung ist, dass Sie das Terminal schließen und es erneut starten.Es löst dein Problem. denn in meinem Fall funktioniert es.

Ebenfalls, 

Sudo lsof -i:<PORT_NO>

schließen Sie die Instanz für die aktuelle Zeit, aber der Prozess kann nicht im Hintergrund angehalten werden. Also für eine Zeit, 

Sudo kill <PID>

funktioniert, aber wieder, wenn wir unseren Code aktualisieren und speichern, tritt dieses Problem erneut auf wie bei Nodemon .

So beenden Sie das Terminal, um das Problem zu lösen. OR 

  killall -9 node
11
techyaura

У меня такая же проблема. (Следующие шаги хорошо работают in Windows 10):

  1. Открыть диспетчер задач (нажмитеCtrl+Alt+Delete)
  2. Выберите вкладку "Процессы"
  3. Искать 'Node.js: серверный JavaScript'
  4. Выберите его и нажмите кнопку "Завершить задачу"

Теперь вы можете запустить npm start.

Надеюсь, это поможет вам.

10
Mahyar

Das passiert mir manchmal, EADDR im Einsatz. Normalerweise wird im Hintergrund ein Terminalfenster ausgeblendet, in dem die App noch ausgeführt wird. Sie können den Vorgang mit Strg + C im Terminalfenster anhalten. 

Oder Sie hören den Port möglicherweise mehrmals, weil copy/pasta =)

3
sova

Kam hier von Google mit einer Lösung für High Sierra.

In den Netzwerkeinstellungen von Macos wurde etwas geändert, und einige Apps (einschließlich Ping) können localhost nicht auflösen.

Die Bearbeitung von/etc/hosts scheint ein Fix zu sein:

cmd: Sudo nano /etc/hosts/ inhalt 127.0.0.1 localhost

Oder einfach (wenn Sie sicher sind, dass/etc/hosts leer ist) Sudo echo '127.0.0.1 localhost' > /etc/hosts

2
sznowicki

Ich habe das Gleiche gesehen und alle obigen Vorschläge ohne Erfolg ausprobiert. Hier sind Schritte, die das Problem lösen: - WLAN ausschalten - npm start (das sollte funktionieren) - WLAN einschalten

Ich bin mir nicht ganz sicher, was das Hauptproblem ist, aber das hat es für mich gelöst.

2
James Smith

Öffnen Sie den Task-Manager (drücken Sie Strg + Alt + Entf.). Wählen Sie die Registerkarte "Prozesse". Suchen Sie nach "Node.js: Server-seitiges JavaScript". Wählen Sie diese aus und klicken Sie auf die Schaltfläche "Task beenden"

1
Omar bakhsh

Es kann sich um einen Admin-Prozess handeln, der im Hintergrund ausgeführt wird, und netstat zeigt dies nicht an.
Verwenden Sie tasklist | grep node, um die PID dieses Administrationsprozesses zu suchen, und anschließend kill PID.

0
tnoel999888

Ich habe 2 Stunden lang verbracht, um herauszufinden, warum EADDRINUSE mir nicht erlaubte, eine App zu sarten (andere Knoten-Express-Server waren in Ordnung). Nach dem Hinzufügen von lazyConnect: true, to zur Datenquellenkonfiguration begann es zu funktionieren. 

Fragen Sie mich nicht, warum es geholfen hat. Ich weiß es nicht. Ich gebe diese Informationen hier nur für Leute, die das gleiche Problem haben. 

0
test30

In package.json-Skripten enthalten:

"start": "nodemon app.js --delay 1500ms"

Ich glaube, das Problem war für mich die Zeit, in der der alte Port nicht rechtzeitig von Nodemon für den Neustart heruntergefahren wurde. Ich habe das Problem mit Multer erlebt.

0
Kalkhas

Ich habe dieses Problem mit Git Bash unter Windows. Ich führe npm start oder node app.js aus. Nachdem ich ihn kurz mit Strg + C beendet und versucht habe, den Server erneut mit npm start oder node app.js zu starten, erhalte ich diese Fehlermeldung.

Wenn ich dies mit der regulären Windows-Eingabeaufforderung mache, funktioniert es einwandfrei.

Oder Sie können es auch anders machen. Öffnen Sie den Task-Manager und suchen Sie die Zeile " Node.js: Serverseitiges JavaScript ". Wählen Sie das aus und beenden Sie die Aufgabe . Es sollte jetzt klappen.

Vielen Dank.

0
Amanullah Aman

Für Windows-Benutzer können Sie das CurrPorts - Tool verwenden, um die verwendeten Ports problemlos zu beenden

enter image description here

0
Zuhair Taha

Versuchen Sie, den localhost in Ihrem Browser zu öffnen. Geben Sie einfach: localhost:3000 in die Adressleiste ein.

Wenn die App geöffnet wird, ist Ihr vorheriger npm run noch aktiv. Jetzt können Sie einfach Änderungen am Code vornehmen und die Auswirkungen sehen, wenn Sie dieselbe App entwerfen oder wenn Sie eine andere App ausführen möchten. Aktualisieren Sie wahrscheinlich den Browser-Tab), um den Absturz herbeizuführen;) ..... Führen Sie npm run start erneut aus Ihrem neuen App-Verzeichnis aus. Hoffe das hilft! :)

oder

Sie können den Task-Manager (WINDOWS_KEY + X> Task-Manager) öffnen und die Zeile "Node.js: Serverseitiges JavaScript" sehen. Wähle das aus und beende die Aufgabe .... Es sollte jetzt funktionieren !!



Falls nicht, ändern Sie die .env-Datei Ihrer App in port:3002 und führen Sie die neue App aus. Dadurch können Sie zwei separate Apps an verschiedenen Ports ausführen. Prost!!

0
Mohit Singh

wenn Sie Webstorm verwenden, vergewissern Sie sich, dass der Standardport nicht 3000 aus Datei -> Einstellungen -> Erstellen, Ausführen, Bereitstellung -> Debugger ist. Und dort ändern

Eingebauter Serverport

und setzen Sie ihn auf "63342" oder sehen Sie diese Antwort Ändern Sie den WebStorm LiveEdit-Port (63342) .

0
Muhammad Saleh

Ich fand diese einfache Lösung für Mac-Benutzer:

killall node
0
Ryan Dhungel