Node.js调用os.networkInterfaces()返回空对象,无法获取客户端MAC地址求助
Node.js os.networkInterfaces() 返回空对象的排查方案
我尝试用Node.js内置模块os.networkInterfaces()获取MAC地址,但代码编译通过后调用始终返回空对象,试过ES模块和CommonJS两种写法:
ES模块写法:
import {networkInterfaces} from 'os'; // ... const mac = networkInterfaces();
CommonJS写法:
const os = require('os'); const mac = os.networkInterfaces();
可能的原因及解决办法
- 环境不支持:
os.networkInterfaces()只能获取运行Node.js进程的宿主机器的网络接口信息,如果是在浏览器环境(包括Electron渲染进程)、无网卡的容器/沙箱里运行,必然返回空。另外注意:浏览器前端无法获取访客的MAC地址,这是浏览器安全策略的硬性限制,别浪费时间在这个方向上。 - 权限不足:Linux系统中,若Node.js进程没有读取网络接口信息的权限,也会返回空。可以尝试用
sudo运行进程测试,或者检查/sys/class/net目录的访问权限。 - 无可用网络接口:如果机器上所有网卡都被禁用,
os.networkInterfaces()自然返回空。在终端执行ifconfig(Linux/macOS)或ipconfig(Windows),确认有启用的网络接口后再运行代码。
内容的提问来源于stack exchange,提问作者GoldenView
相关产品推荐
相关产品推荐

