You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js项目如何配置服务器本地IP?获取网卡IP报TypeError如何解决?

报错原因

你遇到的TypeError: Cannot read property '1' of undefined错误是因为os.networkInterfaces()返回的网络接口列表里不存在Ethernet这个属性,常见诱因有3个:

  • 不同操作系统的网卡命名规则不同:Windows系统可能叫以太网,Mac/Linux系统可能叫en0、eth0、wlan0,如果你的设备用的是WiFi连接,也不会出现Ethernet网卡
  • 就算存在对应网卡,数组索引也不一定是1,部分设备第一个有效IP的索引是0
  • 你的代码里还漏了fs模块的引入,后续调用fs.existsSync、fs.mkdirSync时也会抛出未定义报错

修复方案

替换硬编码取IP的逻辑,写通用方法自动获取本机IPv4内网IP

把原来第10到12行的代码替换为以下内容:

const os = require("os");
// 引入缺失的fs模块
const fs = require("fs");

// 通用获取本机IPv4内网IP方法
function getLocalIp() {
  const interfaces = os.networkInterfaces();
  for (const interfaceName of Object.keys(interfaces)) {
    for (const interfaceInfo of interfaces[interfaceName]) {
      // 过滤回环地址、IPv6地址,仅取可用的内网IPv4
      if (interfaceInfo.family === 'IPv4' && !interfaceInfo.internal) {
        return interfaceInfo.address;
      }
    }
  }
  // 取不到有效IP时默认用本地回环地址兜底
  return '127.0.0.1';
}
const ip = getLocalIp();

可选优化

如果你的服务需要支持同局域网其他设备访问,可以直接把app.listen(process.env.PORT, ip)里的ip参数改为0.0.0.0,这样服务会自动监听所有可用网卡接口,无需手动获取IP。

内容的提问来源于stack exchange,提问作者Konnect Holdings LLC

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 03:18:02