как освободить локальный хост из Error: слушайте EADDRINUSE - PullRequest
112 голосов
/ 18 декабря 2011

Я тестирую сервер, написанный на nodejs в Windows 7, и когда я пытаюсь запустить тестер в командной строке, я получаю следующую ошибку

Error: listen EADDRINUSE
at errnoException (net.js:614:11)
at Array.0 (net.js:704:26)
at EventEmitter._tickCallback (node.js:192:40)

как я могу это исправить без перезагрузки?

Ответы [ 26 ]

5 голосов
/ 01 мая 2019

Проверьте идентификатор процесса

sudo lsof -i: 8081

Чем убить конкретный процесс

sudo kill -9 2925

enter image description here

4 голосов
/ 13 сентября 2018

Вышеупомянутый узел killall -9, предложенный Патриком, работает, как и ожидалось, и решает проблему, но вы можете прочитать часть редактирования этого самого ответа о том, почему kill -9 может быть не лучшим способом сделать это.

Кроме того, вы можете захотеть нацелиться на один процесс, а не убивать вслепую все активные процессы.

В этом случае сначала получите идентификатор процесса (PID) процесса, запущенного на этом порту (скажем, 8888):

lsof -i tcp:8888

Это вернет что-то вроде:

COMMAND   PID    USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
node     57385   You   11u  IPv6 0xac745b2749fd2be3      0t0  TCP *:ddi-tcp-1

(СЛУШАТЬ) Тогда просто сделайте (ps - на самом деле нет. Пожалуйста, продолжайте читать ниже):

kill -9 57385
3 голосов
/ 18 февраля 2015

вы можете изменить свой порт в app.js или в файле конфигурации вашего проекта.

по умолчанию ('порт', 80)

и посмотреть, если порт 80 уже используется, вы можете сделать

netstat -antp | grep 80

netstat -antp | grep node

Возможно, вы захотите увидеть, запущен ли уже процесс узла или нет.

ps -ef | grep node

и если вы обнаружите, что он уже запущен, вы можете убить его, используя

узел killall

2 голосов
/ 24 ноября 2018

Это работает на Mac:

Шаг 1.

sudo lsof -i tcp:3000 (or whatever port you want to kill)

Приведенная выше команда даст вам идентификаторы процессов, которые в данный момент удерживают порт.

Шаг 2.

Kill -9 <pid>
1 голос
/ 26 июня 2015

Я создал 2 сервера, прослушивая один и тот же порт 8081, используя один и тот же код, при этом учась

Создание первого сервера shud сработало Не удалось создать второй сервер с задержками обратного вызова EADDRINUSE

node.jsможет быть причиной того, что не работал, или создание 2-го сервера было исключение, и программа закрылась, поэтому 1-й сервер также закрыт

2 подсказка проблемы сервера, я получил от: Как исправить ошибку: прослушать EADDRINUSE в то время какиспользуя nodejs?

1 голос
/ 17 мая 2017

Ошибка: прослушайте EADDRINUSE, чтобы решить ее в Ubuntu, запустите на терминале netstat -nptl, и после этого kill -9 {process-number} эта команда должна завершить процесс узла, и теперь вы можете попытаться снова запустить команду узла server.js

Ex

слушай EADDRINUSE ::: 8080

netstat -nptl

tcp6 0 0 ::: 9000 ::: * LISTEN 9660 / java
tcp6 0 0 ::: 5800 ::: * LISTEN -
tcp6 0 0 ::: 5900 ::: * LISTEN -
tcp6 0 0 ::: 8080 ::: * LISTEN 10401 / узел
tcp6 0 0 ::: 20080 ::: * СЛУШАТЬ 9660 / Java
tcp6 0 0 ::: 80 ::: * LISTEN -
tcp6 0 0 ::: 22 ::: * LISTEN -
tcp6 0 0 ::: 10137 ::: * СЛУШАТЬ 9660 / Java

убить -9 10401

0 голосов
/ 21 мая 2019

Я использовал команду netstat -ano | grep "portnumber", чтобы перечислить номер порта / PID для этого процесса. Затем вы можете использовать taskkill -f //pid 111111 для завершения процесса, последнее значение - это pid, который вы нашли в первой команде.

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

0 голосов
/ 07 ноября 2014

У меня установлен красный узел на моем Mac и Raspberry Pi.Была та же самая проблема, и выполнение 'killall' не помогло.Как только я выключил Raspberry Pi и перезагрузил компьютер, он работал нормально.

0 голосов
/ 14 мая 2019

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

0 голосов
/ 09 апреля 2015

В окне, пожалуйста, выполните эту команду:

taskkill /F /PID 1952
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...