我正在使用ReactJS创建一个网站,我想获取我的本地IP地址。我尝试了几种方法来做到这一点,但是我对结果感到困惑。
首先,我使用npm
上的模块为local-ip-url
,然后使用localIpUrl()
获取我的IP地址并用console.log()
显示。如果我使用终端运行此.js
文件(例如:node index.js
),它将打印出我想要的准确结果(192.168.x.x
)。但是,如果我使用浏览器查看控制台日志,则会显示不同的结果127.0.0.0
。
我尝试了另一种方法,创建自己的函数:
const os = require('os');
function getAvailableIp() {
let ifaces = os.networkInterfaces();
let result = {};
for (let ifname in ifaces) {
ifaces[ifname].forEach(function (iface) {
if ('IPv4' !== iface.family || iface.internal !== false) return;
result[ifname] = iface.address;
});
};
return result;
}
function getIp() {
let ips = getAvailableIp();
return ips.WiFi || 'localhost';
}
与上面相同,当我在终端中运行代码时,它显示出了完美的结果。但是在浏览器上,函数os.networkInterfaces()
返回一个空对象{}
(它的属性是 proto ,我认为这不会引起问题)。因此,它总是返回localhost
。
任何人都可以解释吗?