如果我没记错的话,它几天前用于显示“localhost”。我不确定是什么改变了使server.address()。address返回双冒号(::)而不是。 我在这里读到它返回一个IPv6地址(::)如果它可用但它在我的电脑上被禁用了。 https://nodejs.org/api/http.html#http_server_listen_port_hostname_backlog_callback
答案 0 :(得分:53)
正如文档所说,
开始接受指定端口和主机名上的连接。如果省略主机名,则服务器将在IPv6可用时接受任何IPv6地址(::)上的连接,否则接受任何IPv4地址(0.0.0.0)。端口值为零将分配一个随机端口。
因此,以下代码将打印running at http://:::3456
:
var express = require('express');
var app = express();
var server = app.listen(3456, function () {
var host = server.address().address;
var port = server.address().port;
console.log('running at http://' + host + ':' + port)
});
但是如果你添加一个明确的主机名:
var server = app.listen(3456, "127.0.0.1", function () {
它会打印您想要查看的内容:running at http://127.0.0.1:3456
此外,您可能希望使用some IP lib
中指出的this answer此致,亚历山大
答案 1 :(得分:0)
之所以选择IPV6地址,可能是因为某些其他进程正在使用IPV4端口3456。 有时由于安装了新进程的自动更新而发生这种情况。