Как исправить ошибку: слушать 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 ]

1 голос
/ 20 декабря 2017

Опция, которая работает для меня:

Запуск:

ps -ax | grep node

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

 8078 pts/7    Tl     0:01 node server.js
 8489 pts/10   S+     0:00 grep --color=auto node    
 kill -9 8078
0 голосов
/ 23 октября 2016

, если вы хотите решить эту проблему

$ node server events.js: 141 throw er;// Необработанное событие 'error' ^

Ошибка: прослушивание EADDRINUSE ::: 3000 at Object.exports._errnoException (util.js: 907: 11) в exports._exceptionWithHostPort (util.js: 930: 20)в Server._listen2 (net.js: 1250: 14) при прослушивании (net.js: 1286: 10) в Server.listen (net.js: 1382: 5) в EventEmitter.listen (C: \ sendbox \ mean \ node_modules\ express \ lib \ application .js: 617: 24) в объекте.(C: \ sendbox \ mean \ server.js: 28: 5) в Module._compile (module.js: 409: 26) в Object.Module._extensions..js (module.js: 416: 10) в модуле.load (module.js: 343: 32)

изменить номер порта на 8000

0 голосов
/ 16 октября 2018

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

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

0 голосов
/ 17 июня 2018

EADDRINUSE переводится как «Порт, который вы пытаетесь запустить app.listen (), используется другими программами».Вы можете использовать такой скрипт, чтобы проверить, используется ли ваш порт, а затем изменить порт в вашем app.listen ().

var net = require('net');
var errors = ['EADDRINUSE'];    
var isUsed = function(port) {
    var tester = net.createServer()
        .once('error', function (err) {
          if (!errors.includes(err.code)) {
           console.log("Port is in use, change the port.");
          }
        })
        .once('listening', function() {
            tester.once('close', function() { 
                console.log("You are good to go."); 
            })
            .close()
        })
        .listen(port);
}

Вы можете добавить другие ошибки в массив ошибок, чтобы проверить всевиды ошибок, а также.

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

Windows всегда сложна с открытым исходным кодом ..

изменить порт просто он работает

node-inspector --web-port=8099
0 голосов
/ 09 июля 2019

Моя проблема решена после прочтения небольшой статьи здесь.

0 голосов
/ 12 декабря 2017

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

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