报错 `getaddrinfo ENOTFOUND localhost` 错误的急速解决

1,014 阅读2分钟

以下是针对 Mac 环境下运行 npm run dev 报错 getaddrinfo ENOTFOUND localhost 的完整解决方案,结合错误原因和实际操作步骤:


一、错误原因分析

  1. DNS 解析失败:系统无法将 localhost 解析为 127.0.0.1
  2. Hosts 文件配置错误/etc/hosts 中缺少 127.0.0.1 localhost 条目。
  3. Vite 配置问题:开发服务器未正确绑定本地 IP。
  4. 网络服务异常:DNS 缓存或网络代理干扰。

二、分步解决方案

步骤 1:修复 Hosts 文件

  1. 打开终端,执行以下命令编辑 Hosts 文件:
    sudo vim /etc/hosts
    
  2. 检查是否存在以下两行(若无则添加):
    127.0.0.1       localhost
    ::1             localhost
    
  3. 保存并退出:按 Esc → 输入 :wq → 回车。

步骤 2:清除 DNS 缓存

sudo killall -HUP mDNSResponder

步骤 3:检查 Vite 配置

  1. 打开项目根目录的 vite.config.js(或 vite.config.ts)。
  2. 确保 server.host 配置为 127.0.0.1
    export default {
      server: {
        host: '127.0.0.1', // 明确指定本地 IP
        port: 3000,
      },
    };
    
  3. 保存文件并重启开发服务器:
    npm run dev
    

步骤 4:检查网络代理设置

  1. 进入 系统设置 > 网络 > 高级 > 代理
  2. 关闭所有代理(尤其是 SOCKS5 和 HTTP 代理)。
  3. 重启终端后重试。

三、进阶排查

1. 验证本地回环地址

ping localhost
  • 正常现象:收到 64 bytes from 127.0.0.1 的回复。
  • 异常处理:若失败,需重置网络配置:
    sudo ifconfig en0 down
    sudo ifconfig en0 up
    

2. 检查端口占用

lsof -i :3000  # 假设 Vite 使用默认端口 3000
  • 若端口被占用:修改 vite.config.js 中的 port 为其他值(如 3001)。

3. 重置 Node.js 模块缓存

rm -rf node_modules/.vite
npm install
npm run dev

四、终极方案

若上述步骤无效,尝试:

  1. 重装 Node.js:使用 nvm 安装最新 LTS 版本。
  2. 创建新项目测试
    npm create vite@latest test-project -- --template react
    cd test-project
    npm run dev
    
    • 若新项目正常:原项目依赖或配置存在问题,需逐步迁移排查。

五、错误日志分析

  • 查看详细日志
    npm run dev -- --debug
    
  • 重点关注Error: getaddrinfo ENOTFOUND localhost 后续的堆栈信息,可能提示具体模块或配置问题。

六、扩展知识:为什么会出现此错误?

  • DNS 解析机制localhost 默认指向 127.0.0.1,但某些情况下(如 Hosts 污染、VPN 干扰)会导致解析失败。
  • Vite 的绑定逻辑:Vite 开发服务器默认绑定 0.0.0.0(所有接口),但在某些网络配置下需显式指定 127.0.0.1

通过以上步骤,可彻底解决因 DNS 解析或 Vite 配置导致的 ENOTFOUND localhost 错误。若问题依旧,建议提供完整的 vite.config.js 和终端日志进一步分析。