以下是针对 Mac 环境下运行 npm run dev 报错 getaddrinfo ENOTFOUND localhost 的完整解决方案,结合错误原因和实际操作步骤:
一、错误原因分析
- DNS 解析失败:系统无法将
localhost解析为127.0.0.1。 - Hosts 文件配置错误:
/etc/hosts中缺少127.0.0.1 localhost条目。 - Vite 配置问题:开发服务器未正确绑定本地 IP。
- 网络服务异常:DNS 缓存或网络代理干扰。
二、分步解决方案
步骤 1:修复 Hosts 文件
- 打开终端,执行以下命令编辑 Hosts 文件:
sudo vim /etc/hosts - 检查是否存在以下两行(若无则添加):
127.0.0.1 localhost ::1 localhost - 保存并退出:按
Esc→ 输入:wq→ 回车。
步骤 2:清除 DNS 缓存
sudo killall -HUP mDNSResponder
步骤 3:检查 Vite 配置
- 打开项目根目录的
vite.config.js(或vite.config.ts)。 - 确保
server.host配置为127.0.0.1:export default { server: { host: '127.0.0.1', // 明确指定本地 IP port: 3000, }, }; - 保存文件并重启开发服务器:
npm run dev
步骤 4:检查网络代理设置
- 进入 系统设置 > 网络 > 高级 > 代理。
- 关闭所有代理(尤其是 SOCKS5 和 HTTP 代理)。
- 重启终端后重试。
三、进阶排查
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
四、终极方案
若上述步骤无效,尝试:
- 重装 Node.js:使用
nvm安装最新 LTS 版本。 - 创建新项目测试:
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 和终端日志进一步分析。