"Порт 4200 вже використовується" під час виконання команди ng serve


179

Я вивчаю кутовий 2 і вперше використовую проект кутового CLI для створення проекту пісочниці.

Мені вдалося запустити команду "ng serve", і вона чудово працює. Я хотів не допустити його запуску, тому я запустив "Control Z".

Коли я спробував запустити команду "ng-serve" знову, це дає мені "Порт 4200 вже використовується".

Я запустив "PS", щоб отримати список PID, і вбив PID для кутового кліпу і побіг "ng-serve" знову, він дає той самий порт при помилці використання.


Довічний розробник Windows, який я провів останні кілька місяців на Mac і навчився використовувати CMD + Z. Я почав стикатися з цією проблемою ще в Windows, коли я дефолтом став CTRL + Z замість CTRL + C
Kildareflare

Якщо ви працюєте над кодом візуальної студії, закрийте його та перезавантажте.
Куркула

Відповіді:


323

Це те, що я використовував, щоб вбити прогрес на порту 4200

Для користувачів Linux:

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

Ви також можете спробувати це:

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

Для користувачів Windows:

Номер порта 4200 вже використовується. Відкрийте cmd як адміністратор. Введіть нижче команду в cmd:

netstat -a -n -o

А потім знайдіть порт з номером порту 4200, клацніть правою кнопкою миші на терміналі та натисніть кнопку пошуку, введіть 4200 у «знайти що» та натисніть «знайти далі»: Скажімо, ви знайшли, що номер порту 4200 використовується підписом 18932. Введіть команду нижче cmd:

taskkill -f /pid 18932

Для UNIX:

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

Тепер запустіть ngf (замість ng serve ) в терміналі з папки проекту. Це знищить усі процеси за допомогою порту 4200 і запустить ваш проект Angular.


3
Хоча я розумію, що це правильне рішення, чи це не здається жахливим рішенням? Що робити, якщо я хочу запустити ng serveінший каталог? Не має сенсу вбивати сервер таким чином, а потім перезавантажувати його десь ще чи я щось пропускаю?
Натан Данн

6
Ви можете вказати інший порт за допомогою: --port <new_port>
estellezg

4
Це вбиває браузер за замовчуванням. І не корисно.
shijin

7
це вбивство мого вікна браузера. Я зрозумів, що в кінцевому підсумку, хоча ... Я зробив це ^Zна існуючому кутовому екземплярі, який використовував порт за замовчуванням, нерозумно мені!
silentContest

1
Щоб швидко перевірити, який pid використовує порт 4200 у Windows, скористайтеся netstat -a -n -o | findstr 4200
пента

186

Відкрийте свій , cmd.exeяк administrator,

потім знайти PIDзport 4200

netstat -ano | findstr :4200

Pid для порту 4200

Тут у мене є 3 PID:

  • Червоний - від "ng-serve" (127.0.0.1:10200) LISTENING
  • Зелений - від "вашого браузера"

вбити лише порт 4200 (вбити червоний PID):

taskkill /PID 15940 /F

Примітка: вбивство зеленого призведе до того, що ваш браузер закриється лише силою

pid 15940 pid 15940

тепер ви можете зробити "ng-serve", щоб запустити кутовий додаток на тому ж порту 4200




Додаткові речі:

Один лайнер: Подивившись спосіб оптимізувати це, ось команда "Однолінійний" у цій відповіді: (особлива подяка: Хосепу Альсіні за ці поради)

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

2
Не забудьте зробити це в cmdні Git Bash.
Лев

2
Syntsax для GitBash на Windows netstat -ano | findstr: 4200; taskkill -PID <встановленийPID> -F
intotecho

Оновлення GIt Bash виправить мою проблему
Ісмаїл Фарук

90

Для Mac OS X вам потрібна така команда:

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

Пам'ятайте, що вам потрібно вбити веб-сервер Angular за допомогою Command + C.


Працював і в Ubuntu.
Бекаріо Старший

2
command + C - ключ до вбивства будь-якого процесу. Я та інші розробники поспішають з натисканням команди + z, що просто призупиняє процес, а не вбиває його.
Джасмет

2
@jasmeet натискання Command + Z також неодноразово отримує мене!
Джуліан Фрейзер

26

Не ctrl + Z, потрібно запустити для зупинки ctrl + C


на сьогоднішній день найпростіше рішення проблеми, навіть якщо технічно це не відповідає на питання ОП
Флоріан

@Flo Я думаю, що рішення, тому що моя відповідь виправляє причину, а не наслідки
Емір Мамашов

16

Використовуйте цю команду, щоб вбити ng:

pkill -9 ng

3
я використовував його на моєму ubuntu 18.04. це спалахнуло мого екрана і
перевело

Це вбиває всі інші додатки. Але, нарешті, працює для мене .. дякую
Sakthikanth


11

Під час використання Ctrl+Zви будете призупиняти запущене завдання, але не вбивати його. Пізніше можна використовувати команду fgдля відновлення завдання. Якщо ви хочете вийти ng serve, скористайтеся Ctrl+Cзамість цього, в якому також випустите порт 4200.


7

Зараз ви можете встановити --port 0безкоштовний порт.

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

У цьому випадку не забудьте використати --openпрапор, інакше ви не знатимете, з якого порту було запущено.
rplaurindo

1
Термінал сказав мені, який порт обрав. Це має бути правильна відповідь для користувачів Windows.
Рон


6

Для Windows:

Відкрийте командний рядок і

тип: netstat -a -o -n

Знайдіть ПІД процесу, який потрібно вбити.

Тип: taskkill /F /PID 16876

Цей 16876 - це ПІД для процесу, який я хочу вбити - у цьому випадку процес 4200 - перевірте доданий файл. Ви можете надати будь-який номер порту.

введіть тут опис зображення

Тепер введіть: ng serveщоб запустити ваш кутовий додаток на тому ж порту 4200


5

Я поділяюсь цим, оскільки пташині дві команди не зробили роботу на моєму комп'ютері:

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

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

Зробили наступне, але якщо ви використовували інтегрований термінал у візуальному коді, спробуйте скористатись машинним терміналом і додайте команду fowling:

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

Дякую, це працює для мене, все вище відповідь не працює для мене, оскільки я використовую термінал VScode в ОС Ubuntu.
СУРЕНДРАНАТ S

4
netstat -anp | grep ":4200"

Це скаже тобі, хто має порт.


це - anp? що нічого не повернуло, тому я просто додав пробіл, оскільки ваша команда просила "nestat: для параметра потрібен аргумент --p"
peztherez

Ваш netstat повинен відрізнятися від мого. Можливо, додайте тег ОС.
Джошуа

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

та доступ за допомогою localhost:4201

Це має працювати як тимчасове рішення.

або

спробуйте перерахувати використання портів, використовуючи
lsof -i:4200
і вбийте його вручну
sudo kill -9 <Process PID using port 4200>


4

Підсумовуючи, є кілька рішень: 1) Використовуючи інший порт для визначення номера порту,

ng serve --open --port 4201

2) шляхом вбивства процесу

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

3) Тип

netstat -a -n -o

У командному рядку знайдіть відповідний PID порту та вбийте його

taskkill /F /PID (pid number)

4) Тип netstat -ano|findstr :4200

взяв іноземну адресу PID, яка містить номер порту, а потім вбив її

taskkill /PID (pid number)/F


4

Щоб зупинити весь локальний порт у Windows, використовуйте цей простий коментар, а не шукайте pid окремо за допомогою netstat,

Він знайде весь pid і зупинить локальний порт, який зараз працює,

taskkill /im node.exe /f

корисно для кутових 4 у windows :)
Ікар

3

Просто перезапустіть IDE, який ви використовуєте, тоді він спрацює.


3

За допомогою ctrl + z ви ставите програму на задній план. У Linux ви можете повернути сеанс на перший план за допомогою наступної команди:

fg ng serve

Вам не потрібно вбивати процес.



2

У моєму випадку жодне з вищезгаданого не спрацювало.

УБУНТУ 18.04 ВЕРСІЯ

Внизу команда працювала.

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

2

Якщо ви використовуєте VSCode, у вас є можливість вбити термінал і додати новий термінал. Закрийте вкладку та відкрийте нову вкладку. Це працювало для мене.

Відредаговано: Використовуйте ctrl + c і натисніть y. З терміналом вбивства також можна продовжувати. Якщо ви хочете відкрити новий примірник візуальної студії та запустити інший додаток, ви можете скористатись ng serve --port 4401.


2

Термінал VScode в ОС Ubuntu використовує наступну команду, щоб вбити процес

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

1

Ви також можете спробувати запустити свою програму у візуальному коді студії -:

ng serve --open --port 4201

Ви можете надати будь-який номер порту.


1

У ній сказано, що ми запускаємо послуги з портом № 4200, будь ласка, використовуйте інший порт замість 4200. Нижче подано команду для вирішення проблеми.

Послуга - порт 4300




1

Замість того, щоб убивати весь процес або використовувати ctrl+z, ви можете просто використовувати ctrl+cдля зупинки сервера і можете радісно використовувати ng serve commandбез будь-якого errorsабо якщо ви хочете запустити на іншому порту, просто використовуйте цю команду ng serve --port portno(ex: ng serve --port 4201).


1

Для Ubndu 18.04 sudo lsof -t -i tcp: 3000 | xargs вбивати -9

Це відбувається, коли порт був невдало припинений, тому ця команда припинить його 4200 або 3000 або 3300 будь-якого


0

Я також зіткнувся з тією ж помилкою msg, тому я спробував служити --port 12012, і це працювало чудово.


6
ми не можемо багато нових портів кожного разу.
shijin

10
Хто підтримує такі відповіді?
акула1608

0

Якщо ви компілюєте свій кутовий JS-код у CMD та IDE, ця проблема виникає. У CMD ваш кутовий JS-код автоматично компілюється щоразу, коли ви змінюєте свій кутовий JS-код в IDE, і тоді ваш IDE хоче зайняти той же порт, тобто 4200, який вже зайнятий CMD. Отже, для цього питання є просте рішення, просто закрийте свій cmd під час компілювання коду в IDE.


0

Я стикався з одним і тим же питанням кожного разу, коли мені доводилося вбивати порт.

Я спробував ./node_modules/.bin/ng serve --proxy-config proxy.conf.json --host 0.0.0.0Замість npm startі його роботи

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.