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

Jak*_*ake 27 javascript ipv6 node.js express

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

Ale*_*nko 58

正如文档所说,

开始接受指定端口和主机名上的连接.如果省略主机名,则服务器将在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)
});
Run Code Online (Sandbox Code Playgroud)

但是,如果添加显式主机名:

var server = app.listen(3456, "127.0.0.1", function () {
Run Code Online (Sandbox Code Playgroud)

它将打印您想要看到的内容: running at http://127.0.0.1:3456

您也可以使用本答案中指出的一些IP库

此致,亚历山大

  • URL中的IPv6文字应该用方括号括起来,例如`http:// [::]:3456` (4认同)