Node.js server.address().address returns ::

前端 未结 2 1096
攒了一身酷
攒了一身酷 2021-02-05 02:18

If I remember correctly it used to display \"localhost\" a few days ago. I am not sure what had changed that made server.address().address return double colons (::) instead. I r

2条回答
  •  有刺的猬
    2021-02-05 02:41

    As the docs say,

    Begin accepting connections on the specified port and hostname. If the hostname is omitted, the server will accept connections on any IPv6 address (::) when IPv6 is available, or any IPv4 address (0.0.0.0) otherwise. A port value of zero will assign a random port.

    So, the following code would print 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)
    });
    

    But if you add an explicit hostname:

    var server = app.listen(3456, "127.0.0.1", function () {
    

    It would print what you want to see: running at http://127.0.0.1:3456

    Also you might want to use some IP lib as pointed in this answer

    Best regards, Alexander

提交回复
热议问题