Expressjs服务器地址主机什么都不返回

时间:2015-09-15 16:07:32

标签: javascript node.js express

按照标准的ExpressJs hello word示例,我得到一个'::''。

的主机

为什么会这样?

你好,单词示例:

var server = app.listen(3000, function () {
  var host = server.address().address;
  var port = server.address().port;

  console.log('Example app listening at http://%s:%s', host, port);
});

我找到了一个在port参数后添加'localhost'的提示。当我只看我的电脑时,它解决了,但它无法通过网络工作。我该怎么办?

3 个答案:

答案 0 :(得分:8)

代码

var server = app.listen(3000, function () {

listen函数中没有地址参数,Node会将其绑定到任何地址,与IPV4的地址0.0.0.0相关,并对应{{1}在IPV6中。此::未指定的地址IPv6已缩减为0:0:0:0:0:0:0:0

运行::

之后
netstat -a

我们知道节点服务器使用端口 TCP [::]:3000 CP-Q10001:0 LISTENING 侦听地址::

请参阅http.listen

中使用的3000 here
express.js
  

如果省略主机名,则服务器将在IPv6可用时接受任何IPv6地址(::)上的连接,否则接受任何IPv4地址(0.0.0.0)。

答案 1 :(得分:7)

我尝试了这个示例,并为主机名'::'提供了相同的输出,我做了以下更改作为解决方法:

 var server = app.listen(3000, 'localhost', function () {
     var host = server.address().address;
     var port = server.address().port;
     console.log('Example app listening at http://%s:%s', host, port);
});

输出:

http://127.0.0.1:3000

收听的应用示例

答案 2 :(得分:0)

这将为您提供所需的结果。您不需要包含'localhost'

var server = app.listen(3000, function () {
    var port = server.address().port;
    require('dns').lookup(require('os').hostname(), function (err, add, fam) {
        debug('Example app listening at http://%s:%s', add, port);
    })
});