как освободить локальный хост из 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 ]

160 голосов
/ 21 июля 2013

Выполнить:

ps -ax | grep node

Вы получите что-то вроде:

60778 ??         0:00.62 /usr/local/bin/node abc.js

Затем выполните:

kill -9 60778
95 голосов
/ 18 декабря 2011

Это означает, что адрес, к которому вы пытаетесь привязать сервер, используется.Попробуйте другой порт или закройте программу, используя этот порт.

36 голосов
/ 05 апреля 2014

В Linux (по крайней мере, производные Ubuntu)

killall node

проще, чем эта форма.

ps | grep <something>
kill <somepid>

Ни то, ни другое не будет работать, если у вас есть ребенок-сирота, владеющий портом.Вместо этого сделайте следующее:

netstat -punta | grep <port>

Если порт удерживается, вы увидите что-то вроде этого:

tcp           0      0.0.0.0:<port>          0.0.0.*       LISTEN     <pid>/<parent>

Теперь убейте с помощью pid:

kill -9 <pid>
35 голосов
/ 25 ноября 2012

Следующая команда предоставит вам список запущенных процессов узла.

ps | grep node

Чтобы освободить этот порт, остановите процесс, используя следующую команду.

kill <processId>
27 голосов
/ 05 февраля 2018

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

Поскольку вы работаете в Windows , вы можете завершить процесс с помощью командной строки (cmd).С помощью cmd вы можете узнать идентификатор процесса (PID) блокирующего приложения.Вам понадобится PID для завершения / уничтожения процесса.

Вот пошаговое руководство ...

  1. Найти все процессы, которые работаютна указанном порту (в данном примере это «3000»):

    netstat -ano |find ": 3000"

  2. Команда netstat выведет список всех процессов, запущенных на указанном порту.В последнем столбце результатов netstat вы видите PID s (в данном примере PID равен "8308").Вы можете узнать больше о конкретном PID, выполнив следующую команду:

    tasklist / fi "pid eq 8308"

  3. Еслиесли вы хотите завершить процесс, вы можете сделать это с помощью следующей команды, используя ее PID (в данном примере PID равен "8308"):

    taskkill / pid 8308 / f

Снимок экрана

enter image description here

19 голосов
/ 10 сентября 2014

При появлении ошибки Ошибка: слушайте EADDRINUSE,

Попробуйте выполнить следующие команды оболочки:

netstat -a -o | grep 8080
taskkill /F /PID 6204

Я grep ed для 8080, потому что я знаю, что мой сервер работаетна порту 8080. (static говорит мне, когда я запускаю его: 'Обслуживание "." на http://127.0.0.1:8080'.) Возможно, вам придется искать другой порт.

15 голосов
/ 16 мая 2017

предположим, что ваш сервер работает на port 3000

lsof -i tcp:3000
    COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
    node    11716 arun   11u  IPv6 159175      0t0  TCP *:3000 (LISTEN)

после этого использования kill -9 <pid>

в указанном выше случае sudo kill -9 11716

10 голосов
/ 30 марта 2018

используйте команду ниже, чтобы завершить процесс, запущенный на определенном порту - 3000 в этом примере ниже

kill -9 $(lsof -t -i:3000)
7 голосов
/ 12 мая 2015

Одним из возможных решений, которое мне помогло, было просто закрыть окно в браузере, где у меня был запущен соответствующий сценарий "http://localhost:3000/".

6 голосов
/ 04 января 2016

При появлении ошибки

Ошибка: прослушайте EADDRINUSE

Откройте командную строку и введите следующие инструкции:

netstat -a -o | grep 8080
taskkill /F /PID** <*ur Process ID no*>

после этого перезапустите телефонный интерфейс.

Если вы хотите узнать, какой телефонный промежуток идентификатора процесса используется, откройте TASK MANAGER и посмотрите заголовок столбца PID и найдите номер PID

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