在 Node.js 中,可以通过 os 模块的 networkInterfaces API 来获取当前机器的 IP 数据。返回的结果类似于 ifconfig 或 ipconfig 命令。
以获取当前主机的 IPv4 地址为例,可以写类似如下的代码:
function getIPAddress() {
const interfaces = require('os').networkInterfaces();
const results = Object.values(interfaces)
.flat()
.filter(interface => interface.family === 'IPv4')
.filter(interface => !interface.internal);
if (results.length === 0) return null;
return results[0].address;
}简单的说明如下:
internal用于表示当前的地址是否是本地回环地址或是其他外部无法访问的地址(例:127.0.0.1);family用于表示当前地址的类型,将会是IPv4或IPv6中的一种;address用于表示当前的 IP 地址;os.networkInterfaces的返回是一个对象,key 用于表示 network interface,比如常见的lo或者eth0等。
更多的返回数据及解释,可以参考官方文档。