«Порт 4200 уже используется» при запуске команды ng serve


179

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

Я смог запустить команду "NG serve", и она прекрасно работает. Я хотел остановить его запуск, поэтому я запустил «Control Z».

Когда я снова попытался запустить команду «ng-serve», она выдала мне «Порт 4200 уже используется».

Я запустил «PS», чтобы получить список PID, и убил PID для angular-cli и снова запустил «ng-serve», тем не менее, он выдает тот же порт при ошибке использования.


Пожизненный разработчик Windows. Я провел последние несколько месяцев на Mac и научился использовать CMD + Z. Я снова
столкнулся с

Если вы работаете над кодом Visual Studio, закройте его и перезапустите.
Куркула

Ответы:


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 используется номером pid 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
Это убивает браузер по умолчанию. И не полезно.
Шидзин

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

1
Чтобы быстро проверить, какой pid использует порт 4200 в Windows, используйте netstat -a -n -o | findstr 4200
Penta

186

Открой свой cmd.exeкак administrator,

затем найти PIDизport 4200

netstat -ano | findstr :4200

Пид для порта 4200

Здесь у меня есть 3 PID:

  • Красный - из "ng-serve" (127.0.0.1:4200), который LISTENING
  • Зеленый из "вашего браузера"

убить только порт 4200 (убить красный PID):

taskkill /PID 15940 /F

примечание: убить зеленую заставит ваш браузер закрыть принудительно.

Taskkill PID 15940

Теперь вы можете выполнить «ng-serve», чтобы запустить ваше угловое приложение с того же порта 4200.




Дополнительный материал:

Один вкладыш: после того, как вы нашли способ оптимизировать это, вот команда One-liner этого ответа: (особая благодарность: Josep Alsina за эти советы)

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 <foundPID> -F
интехо

Обновление GIt Bash решает мою проблему
Исмаил Фарук

90

В Mac OS X вам понадобится следующая команда:

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

Помните, что вам нужно убить веб-сервер Angular с помощью Command + C.


Работал и в Ubuntu.
Бекарио Старший

2
Команда + C - это ключ, чтобы убить любой процесс. Я и другие разработчики в спешке нажимаем команду + z, которая просто приостанавливает процесс, а не убивает его.
Жасмит

2
@jasmeet нажатие Ctrl + Z тоже получало меня несколько раз!
Джулиан Фрейзер

26

Не Ctrl + Z, вы должны запустить для остановки Ctrl + C


безусловно, самое простое решение проблемы, даже если технически это не отвечает на вопрос ОП
Флориан

@ Я думаю, что решение, потому что мой ответ исправляет причину, а не следствия
Эмир Мамашов

16

Используйте эту команду, чтобы убить нг:

pkill -9 ng

3
я использовал его на своем Ubuntu 18.04. он высветил мой экран и привел меня к
входу

Это убивает все другие приложения. Но, наконец, работает для меня .. спасибо
Sakthikanth

13

ng serve --port <YOUR_GIVEN_PORT_NUMBER>

Вы должны попробовать приведенную выше команду для запуска на заданном порту.


Хорошо работал на Ubuntu 18.
Марк Одей

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

Найдите PID процесса, который вы хотите убить.

Тип: taskkill /F /PID 16876

Этот 16876 - это PID для процесса, который я хочу уничтожить - в этом случае это процесс 4200 - проверьте вложенный файл. Вы можете указать любой номер порта.

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

Теперь ng serveвведите : чтобы запустить ваше угловое приложение на том же порту 4200


5

Я поделился этим, так как две команды, работающие с птицами, не выполняли работу на моем Mac:

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

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

Следующий сделал, но если вы использовали встроенный терминал в Visual Code, попробуйте использовать терминал вашего компьютера и добавьте команду fowling:

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

Спасибо, это работает для меня, все ответы выше не работают для меня, так как я использую терминал VScode в ОС Ubuntu.
СУРЕНДРАНАТ С

4
netstat -anp | grep ":4200"

Это скажет вам, у кого есть порт.


это - ан? это ничего не вернуло, поэтому я просто добавил пробел, потому что ваша команда запрашивала «nestat: option требует аргумента --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 в окнах :)
Икар

3

Просто перезапустите IDE, которую вы используете, и она заработает.


3

С Ctrl + Z вы кладете программу в фоновом режиме. В Linux вы можете вернуть сеанс на передний план с помощью следующей команды:

fg ng serve

Вам не нужно убивать процесс.



2

В моем случае ничего из вышеперечисленного не сработало.

UBUNTU 18.04 VERSION

Ниже команда сработала.

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

2

Если вы используете VSCode, у вас есть возможность убить терминал и добавить новый терминал. Закройте вкладку и откройте новую вкладку. Это сработало для меня.

Отредактировано: используйте ctrl + c и нажмите y. Без терминала также можно продолжить. Если вы хотите открыть новый экземпляр Visual Studio и запустить другое приложение, вы можете использовать ng serve --port 4401.


2

Терминал VScode в ОС Ubuntu использует следующую команду, чтобы убить процесс

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

1

Вы также можете попробовать запустить приложение в Visual Studio Code -:

ng serve --open --port 4201

Вы можете дать любой номер порта.


1

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

нг служить --порт 4300



1

Завершите процесс и закройте терминал, который вы использовали для запуска приложения на этом порту.


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, поэтому я попробовал ng serve --port 12012, и она работала нормально.


6
мы не можем много нового порта каждый раз.
Шидзин

10
Кто голосует против таких ответов?
shark1608

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.