Next.js开发启动报错:read ECONNRESET与TypeError: fetch failed求助
解决Next.js开发服务器启动时的TypeError: fetch failed (ECONNRESET)错误
问题场景
运行npm run dev启动Next.js 14.2.3或14.3.2开发服务器时,触发以下错误:
TypeError: fetch failed at node:internal/deps/undici/undici:12502:13 at process.processTicksAndRejections (node:internal/process/task_queues:95:5) at async getVersionInfo (/home/shs/tmp/uniswap/node_modules/next/dist/server/dev/hot-reloader-webpack.js:215:21) at async Span.traceAsyncFn (/home/shs/tmp/uniswap/node_modules/next/dist/trace/trace.js:154:20) at async HotReloaderWebpack.start (/home/shs/tmp/uniswap/node_modules/next/dist/server/dev/hot-reloader-webpack.js:607:28) at async startWatcher (/home/shs/tmp/uniswap/node_modules/next/dist/server/lib/router-utils/setup-dev-bundler.js:156:5) at async setupDevBundler (/home/shs/tmp/uniswap/node_modules/next/dist/server/lib/router-utils/setup-dev-bundler.js:775:20) at async Span.traceAsyncFn (/home/shs/tmp/uniswap/node_modules/next/dist/trace/trace.js:154:20) at async initialize (/home/shs/tmp/uniswap/node_modules/next/dist/server/lib/router-server.js:78:30) at async Server.<anonymous> (/home/shs/tmp/uniswap/node_modules/next/dist/server/lib/start-server.js:249:36) { [cause]: Error: read ECONNRESET at TLSWrap.onStreamRead (node:internal/stream_base_commons:218:20) { errno: -104, code: 'ECONNRESET', syscall: 'read' } }
项目package.json配置如下:
{ "name": "uniswap", "version": "0.1.0", "private": true, "scripts": { "dev": "next dev", "build": "next build", "start": "next start", "lint": "next lint" }, "dependencies": { "@radix-ui/react-dialog": "^1.0.5", "@radix-ui/react-icons": "^1.3.0", "@radix-ui/react-label": "^2.0.2", "@radix-ui/react-navigation-menu": "^1.1.4", "@radix-ui/react-select": "^2.0.0", "@radix-ui/react-slot": "^1.0.2", "@reduxjs/toolkit": "^2.2.5", "class-variance-authority": "^0.7.0", "clsx": "^2.1.1", "next": "14.2.3", "react": "^18", "react-dom": "^18", "react-redux": "^9.1.2", "tailwind-merge": "^2.3.0", "tailwindcss-animate": "^1.0.7" }, "devDependencies": { "@types/node": "^20", "@types/react": "^18", "@types/react-dom": "^18", "eslint": "^8", "eslint-config-next": "14.2.3", "postcss": "^8", "tailwindcss": "^3.4.1", "typescript": "^5" } }
使用Node.js版本为lts/iron (20.13.1),且已确认错误与已安装包无关。
错误原因分析
该错误触发于Next.js热重载模块执行getVersionInfo时的fetch请求,连接被重置(ECONNRESET)。核心诱因包括:
- Next.js的版本检查请求被本地防火墙、VPN或代理工具拦截
- Node.js 20.13.1与Next.js底层依赖undici存在兼容性问题
- 本地网络环境限制了对外HTTP请求
解决方法
1. 禁用Next.js版本检查
直接关闭Next.js启动时的版本更新检查,避免触发失败的fetch请求:
修改package.json中的dev脚本:
"scripts": { "dev": "NEXT_DISABLE_VERSION_CHECK=1 next dev", "build": "next build", "start": "next start", "lint": "next lint" }
也可以临时在终端执行:
NEXT_DISABLE_VERSION_CHECK=1 npm run dev
2. 调整Node.js版本
尝试升级Node.js到20.x最新稳定版,或降级到18.x LTS版本,解决可能的依赖兼容性问题。
3. 检查网络限制
临时关闭本地防火墙、VPN或代理工具,确认是否是网络拦截导致请求失败。
4. 清除缓存文件
清除Next.js缓存和依赖缓存,避免缓存损坏引发异常:
rm -rf .next node_modules/.cache npm install npm run dev
内容的提问来源于stack exchange,提问作者shsotoudegan
相关产品推荐
相关产品推荐

