我下载了钉钉的todo示例项目
git地址:https://github.com/open-dingt...
然后到todo-server目录下执行 npm run serve想启动服务,但是报如图错误,windows难道不支持nodejs吗?但是我启动别的nodejs项目时又不报这个错:win32"os.networkInterface()" dose not support
我下载了钉钉的todo示例项目
git地址:https://github.com/open-dingt...
然后到todo-server目录下执行 npm run serve想启动服务,但是报如图错误,windows难道不支持nodejs吗?但是我启动别的nodejs项目时又不报这个错:win32"os.networkInterface()" dose not support
请看api官方文档,win平台不支持的会在文档里说明的。没说明的是夸平台的。
不能跨平台的process.getgid
等我吃完饭再看看源码。
上文原文, 原文未动, 刚刚吃完晚饭. 先说原因再吐槽.
项目坐着用的Mac, 网卡名称和Windows琳琅满目的网络适配器名称不一致, 导致项目无法找到理想的网卡, 主动报错的. 改源代码就好了. 其实找到一个支持IPv4的网卡就可以.
将todo-server/app/middleware/helper.js中的for替换
源代码
for(;i<os.networkInterfaces().en0.length;i++){
if(os.networkInterfaces().en0[i].family=='IPv4'){
IPv4=os.networkInterfaces().en0[i].address;
break;
}
}
修改为
const ifaces = os.networkInterfaces()
for (;i < ifaces.length;i++) {
const iface = ifaces[i]
if (iface.family == 'IPv4') {
IPv4 = iface.address
break
}
}
截图明显是在日志输出异常, 如果是Node抛出的异常会更详细并且node会终止运行.
try {
for (;i < os.networkInterfaces().en0.length;i++) {
if (os.networkInterfaces().en0[i].family == 'IPv4') {
IPv4 = os.networkInterfaces().en0[i].address
break
}
}
logger.info('IPv4', IPv4, {timestamp: Date.now(), pid: process.pid})
logger.info('PORT', PORT, {timestamp: Date.now(), pid: process.pid})
logger.info('access your browser address', IPv4 + ':' + 3000, {timestamp: Date.now(), pid: process.pid})
} catch(e) {
logger.log('error', os.platform() + ' "os.networkInterfaces()" does not support')
}
3 回答2.6k 阅读✓ 已解决
1 回答919 阅读✓ 已解决
2 回答1.2k 阅读
1 回答877 阅读✓ 已解决
2 回答1.6k 阅读
2 回答604 阅读✓ 已解决
2 回答1k 阅读
这个是你的系统不支持nodejs调用网卡信息,部分window系统是有这个问题。
其他nodejs项目是可能没有调用这个接口。