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.
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
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.
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
У меня такая же проблема. (Следующие шаги хорошо работают in Windows 10):
Теперь вы можете запустить npm start
.
Надеюсь, это поможет вам.
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 =)
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
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.
Ö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"
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
.
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.
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.
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.
Für Windows-Benutzer können Sie das CurrPorts - Tool verwenden, um die verwendeten Ports problemlos zu beenden
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!!
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) .
Ich fand diese einfache Lösung für Mac-Benutzer:
killall node