Подтвердить что ты не робот

Узел адреса сервера Expressjs ничего не возвращает

Следуя стандартным примерам выражения HelloJS ExpressJ, я получаю хост '::'.

Почему это происходит?

привет слово слово:

var server = app.listen(3000, function () {
  var host = server.address().address;
  var port = server.address().port;

  console.log('Example app listening at http://%s:%s', host, port);
});

Я нашел подсказку, которая добавила "localhost" после параметра порта. Он решил, когда я смотрел только мой компьютер, но он не будет работать по сети. Что мне делать?

4b9b3361

Ответ 1

Для кода

var server = app.listen(3000, function () {

без параметра адреса в функции listen, Node привяжет его к любому адресу, связанному с адресом 0.0.0.0 IPV4, и соответствует :: в IPV6. И этот IPV6 неуказанный адрес 0:0:0:0:0:0:0:0 сводится к ::,

После запуска netstat -a

 TCP    [::]:3000              CP-Q10001:0       LISTENING

Мы знаем, что сервер Node прослушивает адрес :: с портом 3000.


Обратитесь к http.listen, который express.js используется в здесь

app.listen = function listen() {
  var server = http.createServer(this);
  return server.listen.apply(server, arguments);
};

Если имя хоста опущено, сервер будет принимать соединения на любом IPv6-адресе (::) при наличии IPv6 или любом IPv4-адресе (0.0.0.0) в противном случае.

Ответ 2

Я попробовал пример и имел тот же вывод для имени хоста '::', я сделал следующее изменение как обходное решение:

 var server = app.listen(3000, 'localhost', function () {
     var host = server.address().address;
     var port = server.address().port;
     console.log('Example app listening at http://%s:%s', host, port);
});

выход:

Пример прослушивания приложения в http://127.0.0.1:3000

Ответ 3

Это даст вам результаты, которые вы ищете. Вам не нужно включать "localhost"

var server = app.listen(3000, function () {
    var port = server.address().port;
    require('dns').lookup(require('os').hostname(), function (err, add, fam) {
        debug('Example app listening at http://%s:%s', add, port);
    })
});