"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.

peztherez
quelle
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.

Bart Hoekstra
quelle
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
Anthony Kal
quelle
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.

Julian Fraser
quelle
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

Emir Mamashov
quelle
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
Lolita
quelle
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.

Shubham Verma
quelle
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.

Roman Lo
quelle
7

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

ng serve --port 0 // will get a free port for you
Yevhen
quelle
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)
Sharath Parupati
quelle
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

Jay Kareliya
quelle
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
Ahmed Hadi
quelle
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.

Joshua
quelle
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>

Shijin
quelle
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

Mohaimin Moin
quelle
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
saravana va
quelle
hilfreich für Winkel 4 in Windows :)
Ikarus
3

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

aldo
quelle
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.

Geist
quelle
2

Der einfachste einzeilige Befehl:

 sudo fuser -k 4200/tcp
Salman Ahmed
quelle
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)
Außerirdischer
quelle
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.

DIBYA RANJAN TRIPATHY
quelle
2

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

lsof -t -i tcp:4200 | xargs kill -9
SURENDRANATH S.
quelle
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.

HarmesH KaushiK
quelle
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

Dharma Rao Palli
quelle
1

Sie können fuser -k 4200 / tcp verwenden, wenn es sich um ein Linux-Betriebssystem handelt

Machhindra Neupane
quelle
1

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

Georgi Georgiev
quelle
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).

Alekya
quelle
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

user2642281
quelle
0

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

Sachin Gaikwad
quelle
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.

vishal
quelle
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

Ismail Farooq
quelle