最近,通过nodejs的os模块获取本机的IP,借鉴网上别人的方法,有时候会在windows环境获取失败,我猜测是不同的网卡会获取到不同的网络接口信息,所以,我决定自己写一个通用的方法,能在mac、windows和linux环境都能成功获取。代码如下:
function getLocalIP() {
const os = require('os');
const ifaces = os.networkInterfaces();
let ip = '';
for (let dev in ifaces) {
for (let i = 0; i < ifaces[dev].length; i++) {
if (!ifaces[dev][i].internal && ifaces[dev][i].family === 'IPv4' && !ifaces[dev][i].address.includes('::') && ifaces[dev][i].address !== '127.0.0.1') {
ip = ifaces[dev][i].address;
break;
}
}
}
return ip;
}
经测试在三种环境下,都能正确获取到本机的IP。