按照标准的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'的提示。当我只看我的电脑时,它解决了,但它无法通过网络工作。我该怎么办?
答案 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);
});
输出:
收听的应用示例答案 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);
})
});