根据express官方文档对app.listen()
函数的文档说明,它完全等同于 Node.js 的server.listen()
。
该函数的官方文档中对参数host
描述如下:
If port
is omitted or is 0, the operating system will assign an arbitrary unused port, which can be retrieved by using server.address().port
after the 'listening' event has been emitted.
If host
is omitted, the server will accept connections on the unspecified IPv6 address (::) when IPv6 is available, or the unspecified IPv4 address (0.0.0.0) otherwise.
In most operating systems, listening to the unspecified IPv6 address (::) may cause the net.Server to also listen on the unspecified IPv4 address (0.0.0.0).
什么意思呢?大致的意思就是:
如果 port
被省略或为 0, 操作系统会自动分配一个任意的未被使用的端口号;你可以在'listening'事件被触发后,通过使用 server.address().port
来获取到该端口号.
当参数 host
被省略时, 如果服务器的IPv6地址是可用的,那么服务器将使用本机所有的IPv6地址 (::)来接受连接;否则,将使用本机所有的IPv4地址(0.0.0.0)来接受连接。
在大多数操作系统上,监听本机所有的IPv6地址 (::) 可能导致net.Server 也监听本机所有的IPv4地址(0.0.0.0).
根据文档描述,如果你明确地只想使用(监听)IPv4地址。
那么你可以将最后一行代码改为:
app.listen(3000, '0.0.0.0');