server.address().address 会返回 : 的问题,查证相关文档
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
也就是说默认为 IPV6 模式了,至于如何改可能要研究下,所以地址最好显示声明为 "127.0.0.1" 或 localhost。