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

peztherez
źródło
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.

Bart Hoekstra
źródło
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
Anthony Kal
źródło
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.

Julian Fraser
źródło
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

Emir Mamashov
źródło
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
Lolita
źródło
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.

Shubham Verma
źródło
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.

Roman Lo
źródło
7

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

ng serve --port 0 // will get a free port for you
Yevhen
źródło
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

Możemy na siłę zabić port, wykonując polecenie.

kill -2 $(lsof -t -i:4200)
sharath parupati
źródło
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

Jay Kareliya
źródło
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
Ahmed Hadi
źródło
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.

Joshua
źródło
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>

shijin
źródło
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

Mohaimin Moin
źródło
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
saravana va
źródło
pomocny dla kątowej 4 w oknach :)
Icarus
3

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

aldo
źródło
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.

Duch
źródło
2

Najprostsze polecenie jednowierszowe:

 sudo fuser -k 4200/tcp
Salman Ahmed
źródło
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)
Obcy
źródło
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.

DIBYA RANJAN TRIPATHY
źródło
2

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

lsof -t -i tcp:4200 | xargs kill -9
SURENDRANATH S
źródło
1

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

ng serve --open --port 4201

możesz podać dowolny numer portu.

HarmesH KaushiK
źródło
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

dharma rao Palli
źródło
1

możesz użyć fuser -k 4200 / tcp, jeśli jest to system operacyjny Linux

Machhindra Neupane
źródło
1

Zabij proces i zamknij terminal, którego używałeś do uruchamiania aplikacji na tym porcie.

Georgi Georgiev
źródło
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).

Alekya
źródło
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

user2642281
źródło
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.

Sachin Gaikwad
źródło
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.

Vishal
źródło
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

Ismail Farooq
źródło