Node.js server.address()。address返回::

时间:2015-11-22 10:18:27

标签: javascript node.js express ipv6

如果我没记错的话,它几天前用于显示“localhost”。我不确定是什么改变了使server.address()。address返回双冒号(::)而不是。 我在这里读到它返回一个IPv6地址(::)如果它可用但它在我的电脑上被禁用了。 https://nodejs.org/api/http.html#http_server_listen_port_hostname_backlog_callback

2 个答案:

答案 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。 有时由于安装了新进程的自动更新而发生这种情况。