Как освободить localhost от Error: прослушать EADDRINUSE

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

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

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

Ответ 1

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

Ответ 2

Run:

ps -ax | grep node

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

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

Тогда do:

kill -9 60778

Ответ 3

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

ps | grep node

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

kill <processId>

Ответ 4

В 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>

Ответ 5

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

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

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

  1. Найдите все процессы, выполняемые на указанном порту (в этом примере порт "3000"):

    netstat -ano | найти ": 3000"

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

    tasklist/fi "pid eq 8308"

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

    taskkill/pid 8308/f

Скриншот

enter image description here

Ответ 6

Когда вы получите сообщение об ошибке Ошибка: прослушайте EADDRINUSE,

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

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

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

Ответ 7

Предположим, что ваш сервер работает на 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

Ответ 8

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

kill -9 $(lsof -t -i:3000)

Ответ 9

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

Ответ 10

Когда вы получите сообщение об ошибке

Ошибка: прослушивание EADDRINUSE

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

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

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

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

Ответ 11

Вышеупомянутый узел 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

(LISTEN) Тогда просто сделайте (ps - на самом деле нет. Пожалуйста, продолжайте читать ниже):

kill -9 57385

Ответ 12

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

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

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

netstat -antp | grep 80

netstat -antp | grep node

вы можете посмотреть, работает ли процесс node или нет.

ps -ef | grep node

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

killall node

Ответ 13

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

Шаг 1.

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

Выше команда даст вам Id процесса, которые в настоящее время хранят порт.

Шаг 2.

Kill -9 <pid>

Ответ 14

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

Работа сервера 1-го сервера Сбой 2-го сервера с EADDRINUSE

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

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

Ответ 15

Ошибка: прослушайте EADDRINUSE, чтобы решить его в Ubuntu, запустите в терминале netstat -nptl, и после этого kill -9 {process-number} эта команда должна убить процесс node, и теперь вы можете попробовать снова запустить команду node 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/node
tcp6 0 0: 20080: * LISTEN 9660/java
tcp6 0 0: 80: * LISTEN -
tcp6 0 0: 22: * LISTEN -
tcp6 0 0: 10137: * LISTEN 9660/java

kill -9 10401

Ответ 16

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

судо лсоф -i: 8081

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

sudo kill -9 2925

enter image description here

Ответ 17

У меня есть node красный, установленный на моем Mac и мой малиновый Pi. Если бы точно такая же проблема и выполнение "killall" не помогло. Как только я закрыл Малиновый Пи и перезапустил свой компьютер, он работал нормально.

Ответ 18

Возможно, вы попытались запустить команду запуска npm на двух разных вкладках. Вы не можете запустить npm-запуск, когда он уже запущен в какой-либо вкладке .check его один раз.

Ответ 19

Для всех, кто пробовал все вышеперечисленное, но все еще не может найти процесс румян, попробуйте их все снова, но убедитесь, что вы добавили "sudo" перед командами.

Ответ 20

Если вам больше нравится UI, найдите процесс Node.js в диспетчере задач Windows и убейте его.

Ответ 21

ps -ef | grep node найти app.js, kill pid app.js

Ответ 22

просто убить узел как узел pkill -9 в терминале ubantu, чем пусковой узел

Ответ 23

Чтобы убить сервер узла, сначала выполните эту команду в своем терминале:

  1. top
  2. откройте другое окно, затем скопируйте id сервера из предыдущего окна: PID number -9 kill так что теперь вы убили сервер узла снова, чтобы запустить приложение.

Ответ 24

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

Ответ 25

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

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

Ответ 26

В окне выполните следующую команду:

taskkill /F /PID 1952