Узел адреса сервера 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" после параметра порта. Он решил, когда я смотрел только мой компьютер, но он не будет работать по сети. Что мне делать?
Ответы
Ответ 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);
})
});