Expressjs服务器地址主机什么都不返回
遵循标准ExpressJs问候语的例子,我得到了一个'::'的主机。
为什么会发生?
你好单词的例子:
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); });
我发现一个提示是在端口参数后添加'localhost'。 它解决了我只是看我的电脑,但它不会在networking上工作。 我该怎么办?
对于代码
var server = app.listen(3000, function () {
在listen
function中没有地址参数的情况下,Node会将其绑定到与IPV4的地址0.0.0.0
相关的任何地址 ,并且对应于IPV6
::
。 而这个IPv6
未指定地址0:0:0:0:0:0:0:0
被简化为::
,
运行netstat -a
TCP [::]:3000 CP-Q10001:0 LISTENING
我们知道节点服务器在地址::
用端口3000
监听。
请参阅http.listen
这里使用的express.js
app.listen = function listen() { var server = http.createServer(this); return server.listen.apply(server, arguments); };
如果省略主机名,则服务器将接受任何IPv6地址(::)上的连接,当IPv6可用时,或者任何IPv4地址(0.0.0.0)。
我试过这个例子,并有相同的输出为主机名'::',我做了以下更改作为一种解决方法:
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上进行侦听
这会给你你正在寻找的结果。 你不需要包含'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); }) });