Next.js 13.4.19 在 Node.js 18.16 环境下因 fetch API 内存泄漏导致 IPC 连接被拒绝(ECONNREFUSED),升级 Node.js 至 18.17.1+ 可彻底解决该问题。
next.js 13.4.19 在 node.js 18.16 环境下因 `fetch` api 内存泄漏导致 ipc 连接被拒绝(econnrefused),升级 node.js 至 18.17.1+ 可彻底解决该问题。
在 Next.js 应用开发过程中,你可能遇到开发服务器(next dev)在代码热更新后无规律断连的现象:页面白屏、控制台抛出 TypeError: fetch failed,并伴随底层错误 Error: connect ECONNREFUSED 127.0.0.1:XXXXX。该问题并非由代码逻辑错误或网络配置引起,而是源于 Node.js 运行时自身的一个已知缺陷。
? 根本原因:Node.js 18.16 的 fetch 内存泄漏
Next.js 13.4+ 默认启用内置 fetch(基于 undici),用于服务端渲染(SSR)、API 路由调用及内部 IPC 通信(如渲染请求转发)。而在 Node.js v18.16.0 中,global.fetch 存在一个未修复的内存泄漏问题——尤其当高频触发(如快速保存、多次 HMR)时,底层 TCP 连接池资源无法及时回收,最终导致 IPC 端口(如 53023)被系统拒绝连接,表现为 ECONNREFUSED。
错误堆栈中的关键线索:
cause: Error: connect ECONNREFUSED 127.0.0.1:53023 at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1247:16)
这明确指向 Node.js 原生网络模块的连接失败,而非 Next.js 或应用层代码问题。
DMap GL地图JSAPI(dmapgl)开发指南。用于编写、审查、调试 DMap 地图 API 代码,涵盖地图初始化、覆盖物渲染、图层管理、事件处理、控件交互等任务。当用户提及 dmap、dmapgl、jsapi‑gl 或相关地图开发需求时自动触发。
✅ 解决方案:升级 Node.js 版本
官方已在 Node.js v18.17.1 中修复该 fetch 相关内存泄漏(见 Node.js Release Notes v18.17.1)。升级后,IPC 稳定性显著提升,HMR 不再引发断连。
操作步骤:
-
检查当前版本
node --version # 若输出 v18.16.x,则需升级
-
升级至 v18.17.1 或更高(推荐 LTS v18.20.2+)
使用版本管理工具(如 nvm):# Linux/macOS nvm install 18.17.1 nvm use 18.17.1 # Windows(使用 nvm-windows) nvm install 18.17.1 nvm use 18.17.1
-
验证修复效果
清理缓存并重启开发服务器:rm -rf .next npm run dev
此后连续修改文件、触发多次热更新,观察控制台是否不再出现 ECONNREFUSED 错误。
⚠️ 注意事项与补充建议
- 避免降级或绕过 fetch:不要手动替换 global.fetch 或禁用 Next.js 的 undici,这可能破坏 SSR/ISR 功能。
- 不推荐长期使用 v18.16.x:即使未复现此问题,该版本存在其他稳定性风险(如 nodejs/node#48442)。
- CI/CD 环境同步更新:确保 GitHub Actions、Vercel 构建环境等也使用 ≥18.17.1 的 Node.js 版本,避免构建差异。
-
若暂无法升级 Node.js:可临时添加 --max-old-space-size=4096 启动参数缓解(治标不治本):
// package.json "scripts": { "dev": "node --max-old-space-size=4096 node_modules/next/dist/bin/next dev" }
✅ 总结
| 项目 | 说明 |
|---|---|
| 问题本质 | Node.js v18.16 的 fetch 实现存在内存泄漏,导致 Next.js IPC 连接耗尽 |
| 关键症状 | ECONNREFUSED 127.0.0.1:XXXXX + TypeError: fetch failed |
| 推荐修复 | 升级 Node.js 至 v18.17.1 或更高稳定版(如 v18.20.2) |
| 验证方式 | 清理 .next、重启 next dev,执行 ≥10 次快速保存测试 |
升级 Node.js 是最直接、安全且符合长期维护规范的解决方案。保持运行时版本与框架兼容性,是保障 Next.js 开发体验稳定性的基石。

















