"Port 4200 wird bereits verwendet", wenn der Befehl ng serve ausgeführt wird


179

Ich lerne Winkel 2 und verwende zum ersten Mal das Winkel-CLI-Projekt, um ein Sandbox-Projekt zu erstellen.

Ich konnte den Befehl "ng serve" ausführen und er funktioniert hervorragend. Ich wollte verhindern, dass es läuft, also habe ich "Control Z" ausgeführt.

Als ich versuchte, den Befehl "ng-serve" erneut auszuführen, wurde "Port 4200 wird bereits verwendet" angezeigt.

Ich habe "PS" ausgeführt, um eine Liste der PID zu erhalten, und die PID für das Angular-Cli beendet und erneut "ng-serve" ausgeführt, es wird jedoch derselbe Port-in-Use-Fehler angezeigt.


Ein lebenslanger Windows-Entwickler Ich habe die letzten Monate auf einem Mac verbracht und mich in der Verwendung von CMD + Z geschult. Dieses Problem trat unter Windows wieder auf, da ich
standardmäßig STRG

Wenn Sie an Visual Studio-Code arbeiten, schließen Sie ihn und starten Sie ihn neu.
Kurkula

Antworten:


320

Dies ist, was ich verwendet habe, um den Fortschritt auf Port 4200 zu beenden

Für Linux-Benutzer:

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

Sie können dies auch versuchen:

sudo kill `sudo lsof -t -i:4200`

Für Windows-Benutzer:

Die Portnummer 4200 wird bereits verwendet. Öffnen Sie das cmd als Administrator. Geben Sie den folgenden Befehl in cmd ein:

netstat -a -n -o

Suchen Sie dann den Port mit der Portnummer 4200, indem Sie mit der rechten Maustaste auf das Terminal klicken und auf Suchen klicken, geben Sie 4200 in "Suchen nach" ein und klicken Sie auf "Weiter suchen": Angenommen, Sie haben festgestellt, dass die Portnummer 4200 von pid 18932 verwendet wird. Geben Sie den folgenden Befehl ein cmd:

taskkill -f /pid 18932

Für UNIX:

alias ngf='kill -9  $(lsof -t -i:4200);ng serve'

Führen Sie nun ngf (anstelle von ng serve ) im Terminal aus dem Projektordner aus. Dadurch werden alle Prozesse über den Port 4200 abgebrochen und Ihr Angular-Projekt ausgeführt.


3
Obwohl mir klar ist, dass dies die richtige Lösung ist, scheint dies nicht eine schreckliche Lösung zu sein? Was ist, wenn ich in ng serveeinem anderen Verzeichnis ausgeführt werden möchte ? Ist es nicht sinnvoll, den Server auf diese Weise zu beenden und ihn dann woanders neu zu starten, oder fehlt mir etwas?
Nathan Dunn

6
Sie können einen anderen Port angeben mit: --port <new_port>
estellezg

4
Dadurch wird der Standardbrowser beendet. Und nicht hilfreich.
Shijin

6
Das hat mein Browserfenster ermordet. Ich habe es aber irgendwann herausgefunden ... Ich hatte ^Zeine vorhandene Winkelinstanz erstellt, die den Standardport verwendete, dumm mich!
quietContest

1
Verwenden Sie netstat -a -n -o |, um schnell zu überprüfen, welche PID Port 4200 in Windows verwendet findstr 4200
penta

184

Öffnen Sie Ihre cmd.exeals administrator,

dann finden Sie die PIDvonport 4200

netstat -ano | findstr :4200

Pid für Port 4200

Hier habe ich 3 PID:

  • Roter ist von "ng-serve" (127.0.0.1:4200) LISTENING
  • Grün ist von "Ihrem Browser"

töte nur Port 4200 (töte die rote PID):

taskkill /PID 15940 /F

Hinweis: Wenn Sie den grünen töten, wird Ihr Browser nur mit Gewalt geschlossen.

taskkill pid 15940

Jetzt können Sie "ng-serve" ausführen, um Ihre Winkel-App am selben Port 4200 zu starten




Zusätzliches Zeug:

Einzeiler: Nachdem Sie nach einer Möglichkeit gesucht haben, dies zu optimieren, finden Sie hier den Einzeiler-Befehl für diese Antwort: (Besonderer Dank geht an: Josep Alsina für diese Tipps)

for /f "tokens=5" %a in ('netstat -ano ^| find "4200" ^| find "LISTENING"') do taskkill /f /pid %a

2
Denken Sie daran cmd, es nicht zu tun Git Bash.
Leo

2
Syntsax für GitBash unter Windows netstat -ano | findstr: 4200; taskkill -PID <establishedPID> -F
Intecho

Das Aktualisieren von GIt Bash behebt mein Problem
Ismail Farooq

89

Unter Mac OS X benötigen Sie den folgenden Befehl:

sudo lsof -t -i tcp:4200 | xargs kill -9

Denken Sie daran, dass Sie Angulars Webserver mit Befehl + C beenden müssen.


Arbeitete auch in Ubuntu.
Becario Senior

2
Befehl + C ist der Schlüssel zum Beenden eines Prozesses. Ich selbst und andere Entwickler in Eile drücken Befehl + z, wodurch der Prozess nur angehalten wird, anstatt ihn zu beenden.
Jasmeet

2
@jasmeet Drücken von Befehlstaste + Z hat mich auch mehrmals erwischt!
Julian Fraser

26

Nicht Strg + Z, Sie müssen für Stopp Strg + C laufen


bei weitem die einfachste Lösung für das Problem, auch wenn es technisch nicht auf die OP-Frage antwortet
Florian

@Flo Ich denke Lösung, weil meine Antwort den Grund korrigiert, nicht die Auswirkungen
Emir Mamashov

16

Verwenden Sie diesen Befehl, um ng zu töten:

pkill -9 ng

3
Ich habe es auf meinem Ubuntu 18.04 verwendet. es blitzte mein Bildschirm und brachte mich zum Ubuntu-Login und tötete alle Apps
srv_sud

Dies tötet alle anderen Apps. Aber funktioniert endlich für mich. Danke
Sakthikanth

13

ng serve --port <YOUR_GIVEN_PORT_NUMBER>

Sie sollten den obigen Befehl versuchen, um auf Ihrem angegebenen Port ausgeführt zu werden.


Arbeitete gut auf Ubuntu 18.
Mark Odey

11

Wenn Sie verwenden Ctrl+Z, werden Sie eine laufende Aufgabe anhalten, aber nicht beenden. Sie können den Befehl später verwenden fg, um die Aufgabe fortzusetzen. Wenn Sie beenden möchten ng serve, sollten Sie Ctrl+Cstattdessen verwenden, wodurch auch der 4200-Port freigegeben wird.


7

Im Moment können --port 0Sie einen freien Port einrichten .

ng serve --port 0 // will get a free port for you

Vergessen Sie in diesem Fall nicht, das --openFlag zu verwenden, da Sie sonst nicht wissen, an welchem ​​Port gestartet wurde.
Rplaurindo

1
Das Terminal hat mir gesagt, welchen Port es gewählt hat. Dies sollte zweifellos die richtige Antwort für Windows-Benutzer sein.
Ron

6

Wir können den Port gewaltsam töten, indem wir dem Befehl folgen.

kill -2 $(lsof -t -i:4200)

6

Für Windows:

Öffnen Sie die Eingabeaufforderung und

Art: netstat -a -o -n

Suchen Sie die PID des Prozesses, den Sie beenden möchten.

Art: taskkill /F /PID 16876

Diese 16876 - ist die PID für den Prozess, den ich beenden möchte - in diesem Fall ist der Prozess 4200 - überprüfen Sie die angehängte Datei. Sie können eine beliebige Portnummer angeben.

Geben Sie hier die Bildbeschreibung ein

Geben Sie nun Folgendes ein ng serve, um Ihre Winkel-App am selben Port 4200 zu starten


5

Ich teile dies, da die beiden Geflügelbefehle auf meinem Mac nicht funktioniert haben:

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

sudo kill `sudo lsof -t -i:4200`

Das Folgende hat es getan, aber wenn Sie das in Visual Code integrierte Terminal verwendet haben, versuchen Sie, Ihr Maschinenterminal zu verwenden, und fügen Sie den Befehl fowling hinzu:

lsof -t -i tcp:4200 | xargs kill -9

Danke, es funktioniert für mich, alle oben genannten Antworten funktionieren nicht für mich, da ich das VScode-Terminal in Ubuntu OS verwende.
SURENDRANATH S

4
netstat -anp | grep ":4200"

Hier erfahren Sie, wer den Hafen hat.


ist es - anp? das gab nichts zurück, also habe ich nur ein Leerzeichen hinzugefügt, weil Ihr Befehl nach "nestat: Option erfordert ein Argument --p"
peztherez

Ihr Netstat muss sich von meinem unterscheiden. Fügen Sie möglicherweise ein Betriebssystem-Tag hinzu.
Joshua

4
ng serve --port 4201 --live-reload-port 4200

und Zugriff mit localhost:4201

Dies sollte als vorübergehende Lösung funktionieren.

oder

Versuchen
lsof -i:4200
Sie, die Portnutzung mit aufzulisten, und beenden Sie sie manuell mit
sudo kill -9 <Process PID using port 4200>


4

Zusammenfassend gibt es mehr als eine Lösung: 1) Durch Verwendung eines anderen Ports zum Definieren der Portnummer,

ng serve --open --port 4201

2) durch Beenden des Prozesses

ctrl + c // for kill
Close all node terminal which is related for running the app.

3) Typ

netstat -a -n -o

Suchen Sie an der Eingabeaufforderung die zugehörige Port-PID und beenden Sie sie mit

taskkill /F /PID (pid number)

4) Typ netstat -ano|findstr :4200

nahm die fremde Adresse PID, die die Portnummer enthält, und tötete sie dann durch

taskkill /PID (pid number)/F


4

Um zu verhindern, dass alle lokalen Ports in Windows ausgeführt werden, verwenden Sie nur diesen einfachen Kommentar, anstatt separat mit netstat nach pid zu suchen.

Es findet alle PIDs und stoppt den lokalen Port, der gerade ausgeführt wird.

taskkill /im node.exe /f

hilfreich für Winkel 4 in Windows :)
Ikarus

3

Starten Sie einfach die von Ihnen verwendete IDE neu, dann funktioniert es.


3

Mit Strg + Z stellen Sie das Programm in den Hintergrund. Unter Linux können Sie die Sitzung mit dem folgenden Befehl wieder in den Vordergrund stellen:

fg ng serve

Sie müssen den Prozess nicht beenden.



2

In meinem Fall hat keines der oben genannten funktioniert.

UBUNTU 18.04 VERSION

Der folgende Befehl hat funktioniert.

sudo kill -9 $(lsof -i tcp:4200 -t)

2

Wenn Sie VSCode verwenden, haben Sie die Möglichkeit, das Terminal zu beenden und ein neues Terminal hinzuzufügen. Schließen Sie die Registerkarte und öffnen Sie eine neue Registerkarte. Es hat bei mir funktioniert.

Bearbeitet: Verwenden Sie Strg + C und drücken Sie y. Auch ohne Tötungsterminal können Sie fortfahren. Wenn Sie eine neue Instanz von Visual Studio öffnen und eine andere Anwendung ausführen möchten, können Sie ng serve --port 4401 verwenden.


2

Das VScode-Terminal in Ubuntu OS verwendet den folgenden Befehl, um den Prozess abzubrechen

lsof -t -i tcp:4200 | xargs kill -9

1

Sie können damit auch versuchen, Ihre Anwendung in Visual Studio-Code auszuführen -:

ng serve --open --port 4201

Sie können eine beliebige Portnummer angeben.


1

Es heißt, dass wir die Dienste bereits mit Port Nr. 4200 ausführen. Bitte verwenden Sie einen anderen Port anstelle von 4200. Der folgende Befehl dient zur Lösung des Problems

ng dienen --port 4300



1

Beenden Sie den Prozess und schließen Sie das Terminal, mit dem Sie die App auf diesem Port ausgeführt haben.


1

Anstatt den gesamten Prozess abzubrechen oder zu verwenden ctrl+z, können Sie ctrl+cden Server einfach zum Stoppen verwenden und ng serve commandproblemlos ohne verwenden errorsoder wenn Sie auf einem anderen Port ausgeführt werden möchten, verwenden Sie einfach diesen Befehl ng serve --port portno(ex: ng serve --port 4201).


1

Für Ubndu 18.04 sudo lsof -t -i tcp: 3000 | Xargs töten -9

Es passiert, wenn der Port nicht erfolgreich beendet wurde, sodass dieser Befehl ihn mit 4200 oder 3000 oder 3300 beendet


0

Ich hatte auch die gleiche Fehlermeldung, also habe ich versucht , - Port 12012 zu bedienen, und es hat gut funktioniert.


6
Wir können nicht jedes Mal viel neuen Port haben.
Shijin

10
Wer stimmt solchen Antworten zu?
Shark1608

0

Wenn Sie Ihren eckigen JS-Code sowohl in CMD als auch in IDE kompilieren, tritt dieses Problem auf. In CMD wird Ihr eckiger JS-Code automatisch kompiliert, wenn Sie Ihren eckigen JS-Code in der IDE ändern und Ihre IDE dann denselben Port belegen möchte, dh 4200, der bereits von CMD belegt ist. Es gibt also eine einfache Lösung für dieses Problem. Schließen Sie einfach Ihren cmd beim Kompilieren Ihres Codes in IDE.


0

Ich hatte jedes Mal das gleiche Problem, wenn ich den Hafen töten musste.

Ich habe ./node_modules/.bin/ng serve --proxy-config proxy.conf.json --host 0.0.0.0stattdessen versucht npm startund seine Werke

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.