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

前端 未结 2 1082
攒了一身酷
攒了一身酷 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

    0 讨论(0)
  • 2021-02-05 02:44

    The reason why its choosing IPV6 address is possibly because some other process is using IPV4 port no 3456. This happens sometimes due to automatic updates where new processes are installed.

    0 讨论(0)
提交回复
热议问题