Как исправить ошибку: слушать EADDRINUSE при использовании nodejs? - PullRequest
412 голосов
/ 28 марта 2012

Если я запускаю сервер с портом 80 и пытаюсь использовать xmlHTTPrequest , я получаю эту ошибку: Error: listen EADDRINUSE

Почему это проблема для nodejs, если я хочу сделать запрос, когда я запускаю сервер на порту 80? Для веб-браузеров это не проблема: я могу путешествовать по Интернету, пока сервер работает.

Сервер:

  net.createServer(function (socket) {
    socket.name = socket.remoteAddress + ":" + socket.remotePort;
    console.log('connection request from: ' + socket.remoteAddress);
    socket.destroy();
  }).listen(options.port);

И просьба:

var xhr = new XMLHttpRequest();

xhr.onreadystatechange = function() {
    sys.puts("State: " + this.readyState);

    if (this.readyState == 4) {
        sys.puts("Complete.\nBody length: " + this.responseText.length);
        sys.puts("Body:\n" + this.responseText);
    }
};

xhr.open("GET", "http://mywebsite.com");
xhr.send();

Ответы [ 37 ]

10 голосов
/ 11 апреля 2018

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

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

step1:

$sudo netstat -plunt |grep :3000

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

tcp6       0      0 :::3000                 :::*                    LISTEN      25315/node

step2:

Теперь у вас есть идентификатор процесса (25315). Убейте этот процесс.

kill -9 25315

step3:

npm run start

Примечание: это решение для пользователей Linux.

7 голосов
/ 23 октября 2018

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

за принудительное убийство

sudo kill -9 $ (sudo lsof -t -i: 80)

используйте вышеупомянутый cmd, чтобы убить определенный порт, а затем запустите ваш сервер

5 голосов
/ 18 декабря 2018

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

killall 9 node
pkill node
npm start 
4 голосов
/ 28 июня 2016

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

как узнать, какой процесс запущен на этом порту => команда: sudo netstat -ap | grep: 3000

вывод: вы получите информацию о процессе, который использует этот порт

tcp 0 0 IP-адрес: 3000 : СЛУШАТЬ 26869 / узел

Теперь вы можете убить этот процесс sudo kill -9 26869

4 голосов
/ 23 декабря 2018

EADDRINUSE означает, что порт вашего приложения nodejs уже используется.

  • Теперь вы должны убить процесс / приложение, работающее на этом порту.
  • Найдите идентификатор процесса приложения по:

lsof -i tcp: 3000

  • Теперь вы получите идентификатор процесса из этого.
  • Запустите это:

kill -9 processId

3 голосов
/ 05 декабря 2018

В приведенной ниже команде замените ваш номер порта

sudo lsof -t -i tcp:portNumber | xargs kill -9
3 голосов
/ 09 января 2015

У меня та же проблема, и я просто закрываю терминал, открываю новый терминал и снова запускаю

node server.js

.это работает для меня, некоторое время просто нужно подождать несколько секунд, пока он снова не заработает.

Но это работает только на компьютере разработчика, а не на консоли сервера ..

3 голосов
/ 04 декабря 2016

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

Или если вы хотите назначить тот же порт приложению. Затем убейте приложение, запущенное на желаемом порту.

Для приложения узла вы можете найти идентификатор процесса для приложения узла:

ps -aux | grep node

После получения идентификатора процесса выполните

kill process_id
2 голосов
/ 06 апреля 2016

В Debian я обнаружил, что для запуска на 80-м порту необходимо выполнить команду от имени пользователя root, т.е.

sudo node app.js

Надеюсь, это поможет

2 голосов
/ 28 марта 2012

Я видел эту ошибку раньше (в узле) с http.client, и, насколько я помню, проблема была связана с не инициализацией httpClient или установкой неверных параметров при создании httpClient и / или в запросе url.

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