„Port 4200 jest już używany” podczas wykonywania polecenia ng serv


179

Uczę się angular 2 i po raz pierwszy używam projektu angular CLI do tworzenia projektu sandbox.

Udało mi się uruchomić polecenie „ng służyć” i działa świetnie. Chciałem go zatrzymać, więc uruchomiłem „Control Z”.

Kiedy ponownie próbuję uruchomić polecenie „ng-serv”, otrzymuję informację „Port 4200 jest już używany”.

Uruchomiłem "PS", aby uzyskać listę PID i zabiłem PID dla angular-cli i uruchomiłem ponownie "ng-serv", ale nadal daje ten sam błąd w użyciu.


Przez całe życie programista Windows Spędziłem kilka ostatnich miesięcy na komputerze Mac i wyszkoliłem się w używaniu CMD + Z. Zacząłem
napotykać

Jeśli pracujesz nad kodem Visual Studio, zamknij go i uruchom ponownie.
Kurkula

Odpowiedzi:


323

To jest to, czego użyłem do zabicia postępu na porcie 4200

Dla użytkowników Linuksa:

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

Możesz także spróbować tego:

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

Dla użytkowników systemu Windows:

Port numer 4200 jest już używany. Otwórz cmd jako administrator. Wpisz poniższe polecenie w cmd:

netstat -a -n -o

Następnie znajdź port z numerem portu 4200, klikając prawym przyciskiem myszy terminal i kliknij znajdź, wpisz 4200 w "znajdź co" i kliknij "znajdź następny": Powiedzmy, że znalazłeś, że numer portu 4200 jest używany przez pid 18932. Wpisz poniższe polecenie w cmd:

taskkill -f /pid 18932

W systemie UNIX:

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

Teraz uruchom ngf (zamiast ng serv ) w terminalu z folderu projektu. Spowoduje to zabicie wszystkich procesów korzystających z portu 4200 i uruchomienie projektu Angular.


3
Chociaż zdaję sobie sprawę, że jest to właściwe rozwiązanie, czy nie wydaje się to okropne rozwiązanie? Co jeśli chcę uruchomić ng servew innym katalogu? Nie ma sensu zabijać serwera w ten sposób, a następnie restartować go w innym miejscu, czy czegoś mi brakuje?
Nathan Dunn

6
Możesz określić inny port za pomocą: --port <new_port>
estellezg

4
To zabija domyślną przeglądarkę. I nie pomocne.
shijin

7
to zamordowało moje okno przeglądarki. W końcu to rozgryzłem ... Zrobiłem ^Zna istniejącej instancji kątowej, która korzystała z domyślnego portu, głuptasie!
quietContest,

1
Aby szybko sprawdzić, który pid używa portu 4200 w systemie Windows, użyj netstat -a -n -o | findstr 4200
penta

186

Otwórz cmd.exejako administrator,

następnie znajdź PIDzport 4200

netstat -ano | findstr :4200

Pid dla portu 4200

Tutaj mam 3 PID:

  • Czerwony pochodzi z „ng-serv” (127.0.0.1:4200) LISTENING
  • Zielony pochodzi z „Twojej przeglądarki”

zabij tylko port 4200 (zabij czerwony PID):

taskkill /PID 15940 /F

uwaga: zabicie zielonego spowoduje tylko zamknięcie przeglądarki na siłę.

Taskkill pid 15940

teraz możesz użyć „ng-serv”, aby uruchomić swoją aplikację kątową na tym samym porcie 4200




Dodatkowe rzeczy:

Jedna linijka: po szukaniu sposobu na zoptymalizowanie tego, oto jedno liniowe polecenie tej odpowiedzi: (specjalne podziękowania dla: Josepa Alsiny za te wskazówki)

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

2
Pamiętaj, aby zrobić to w cmd, a nie Git Bash.
Leo

2
Składnia GitBash w systemie Windows netstat -ano | findstr: 4200; taskkill -PID <ustalonyPID> -F
intotecho

Aktualizacja GIt Bash naprawi mój problem
Ismail Farooq

90

W systemie Mac OS X potrzebujesz następującego polecenia:

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

Pamiętaj, że musisz zabić serwer WWW Angulara za pomocą Command + C.


Pracował również w Ubuntu.
Becario Senior

2
command + C to klucz do zabicia dowolnego procesu. Ja i inni deweloperzy w pośpiechu wciskamy polecenie + z, co po prostu zawiesza proces, zamiast go zabijać.
Jasmeet

2
@jasmeet naciśnięcie Command + Z również mnie kilka razy!
Julian Fraser

26

Nie ctrl + Z, musisz uruchomić, aby zatrzymać ctrl + C


zdecydowanie najprostsze rozwiązanie problemu, nawet jeśli technicznie nie odpowiada na pytanie PO
Florian

@Flo Myślę, że rozwiązanie, ponieważ moja odpowiedź koryguje przyczynę, a nie efekty
Emir Mamashov

16

Użyj tego polecenia, aby zabić ng:

pkill -9 ng

3
Użyłem go na moim ubuntu 18.04. to mój ekran błysnął i zabrał mnie do ubuntu zalogować zabijając wszystkie aplikacje
srv_sud

To zabija wszystkie inne aplikacje, ale w końcu działa dla mnie ... dzięki
Sakthikanth

13

ng serve --port <YOUR_GIVEN_PORT_NUMBER>

Powinieneś wypróbować powyższe polecenie, aby uruchomić na podanym porcie.


Działało dobrze na ubuntu 18.
Mark Odey

11

Kiedy używasz Ctrl+Z, zamierzasz zawiesić uruchomione zadanie, ale nie zabijesz go. Możesz później użyć polecenia, fgaby wznowić zadanie. Jeśli chcesz wyjść ng serve, powinieneś Ctrl+Czamiast tego użyć , w którym zwolni się również port 4200.


7

Teraz możesz ustawić --port 0wolny port.

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

W takim przypadku nie zapomnij użyć --openflagi, w przeciwnym razie nie będziesz wiedział, w którym porcie został uruchomiony.
rplaurindo

1
Terminal powiedział mi, jaki port wybrał. To powinna być poprawna odpowiedź dla użytkowników systemu Windows.
Ron


6

Dla Windowsa:

Otwórz wiersz polecenia i

rodzaj: netstat -a -o -n

Znajdź PID procesu, który chcesz zabić.

Rodzaj: taskkill /F /PID 16876

Ten 16876 - to PID procesu, który chcę zabić - w takim przypadku proces to 4200 - sprawdź załączony plik. Możesz podać dowolny numer portu.

wprowadź opis obrazu tutaj

Teraz wpisz: ng serveaby uruchomić aplikację kątową na tym samym porcie 4200


5

Dzielę się tym, ponieważ dwa polecenia ptactwa nie wykonały pracy na moim Macu:

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

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

Poniższy zrobił, ale jeśli korzystałeś ze zintegrowanego terminala w kodzie wizualnym, spróbuj użyć terminala maszynowego i dodaj polecenie fowling:

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

Dzięki, że działa dla mnie, wszystkie powyższe odpowiedzi nie działają dla mnie, ponieważ używam terminala VScode w systemie Ubuntu.
SURENDRANATH S

4
netstat -anp | grep ":4200"

Dzięki temu dowiesz się, kto ma port.


czy to jest - anp? nic nie zwróciło, więc dodałem spację, ponieważ Twoje polecenie pytało o „nestat: opcja wymaga argumentu --p”
peztherez

Twój netstat musi być inny niż mój. Może dodaj tag systemu operacyjnego.
Joshua

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

i dostęp za pomocą localhost:4201

Powinno to działać jako rozwiązanie tymczasowe.

lub

spróbuj wypisać użycie portu przy użyciu
lsof -i:4200
i wyłącz go ręcznie za pomocą
sudo kill -9 <Process PID using port 4200>


4

Podsumowując, istnieje więcej niż jedno rozwiązanie: 1) Poprzez użycie innego portu do zdefiniowania numeru portu,

ng serve --open --port 4201

2) zabijając proces

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

3) Typ

netstat -a -n -o

w wierszu poleceń, a następnie znajdź powiązany PID portu i zabij go

taskkill /F /PID (pid number)

4) Typ netstat -ano|findstr :4200

wziął zagraniczny adres PID zawierający numer portu, a następnie go zabił

taskkill /PID (pid number)/F


4

Aby zatrzymać cały port lokalny działający w systemie Windows, użyj samego tego prostego komentarza, zamiast szukać pid oddzielnie za pomocą netstat,

Znajduje cały pid i zatrzymuje aktualnie uruchomiony port lokalny,

taskkill /im node.exe /f

pomocny dla kątowej 4 w oknach :)
Icarus

3

Po prostu uruchom ponownie IDE, którego używasz, a wtedy będzie działać.


3

Za pomocą ctrl + z umieszczasz program w tle. W systemie Linux możesz przywrócić sesję na pierwszy plan za pomocą następującego polecenia:

fg ng serve

Nie musisz przerywać procesu.



2

W moim przypadku żaden z wyżej wymienionych nie zadziałał.

WERSJA UBUNTU 18.04

Poniższe polecenie zadziałało.

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

2

Jeśli używasz VSCode, masz możliwość zabicia terminala i dodania nowego terminala. Zamknij kartę i otwórz nową kartę. U mnie to zadziałało.

Edytowane: użyj ctrl + c i naciśnij y. Bez zabijania terminala możesz kontynuować. Jeśli chcesz otworzyć nową instancję programu Visual Studio i uruchomić inną aplikację, możesz użyć narzędzia ng serv - port 4401.


2

Terminal VScode w systemie Ubuntu OS użyj następującego polecenia, aby zabić proces

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

1

Możesz także spróbować uruchomić aplikację w kodzie Visual Studio -:

ng serve --open --port 4201

możesz podać dowolny numer portu.


1

Mówi, że już uruchamiamy usługi z portem nr 4200, użyj innego portu zamiast 4200. Poniższe polecenie służy do rozwiązania problemu

ng służyć - port 4300




1

Zamiast zabijać cały proces lub używać ctrl+z, możesz po prostu użyć ctrl+cdo zatrzymania serwera i szczęśliwie używać ng serve commandbez żadnego errorslub jeśli chcesz uruchomić na innym porcie, po prostu użyj tego polecenia ng serve --port portno(ex: ng serve --port 4201).


1

W przypadku Ubndu 18.04 sudo lsof -t -i tcp: 3000 | xargs zabija -9

Dzieje się tak, gdy port został zakończony niepowodzeniem, więc to polecenie zakończy go 4200 lub 3000 lub3300


0

Napotkałem również ten sam błąd msg, więc próbowałem ng służyć - port 12012 i działało dobrze.


6
nie możemy za każdym razem dodawać nowego portu.
shijin

10
Kto głosuje za takimi odpowiedziami?
shark1608

0

Jeśli kompilujesz swój kątowy kod JS zarówno w CMD, jak i IDE, ten problem występuje. W CMD, twój kątowy kod JS kompiluje się automatycznie za każdym razem, gdy zmienisz swój kątowy kod JS w IDE, a następnie IDE chce zajmować ten sam port, tj. 4200, który jest już zajęty przez CMD. Jest więc proste rozwiązanie tego problemu, po prostu zamknij cmd podczas kompilowania kodu w IDE.


0

Miałem ten sam problem za każdym razem, gdy muszę zabić port.

Próbowałem ./node_modules/.bin/ng serve --proxy-config proxy.conf.json --host 0.0.0.0zamiast npm starti to działa

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.