未用Socket.io却出现GET /socket.io 404的Next.js项目求助
持续出现GET /socket.io 404请求的排查方案(Next.js 15 + next-auth 5 beta)
环境信息
- Next.js: 15.0.0-rc.0
- next-auth: 5.0.0-beta.19
- React: 19.0.0-rc-f994737d14-20240522
- 包管理器: pnpm
问题现象
执行pnpm run dev启动项目后,控制台每隔几秒就输出GET /socket.io?xxx 404请求日志,项目未引入Socket.io依赖,此前启动无此问题,也未修改代码或新增依赖。启动日志片段:
> @ dev /home/dan/Concord/concord > next dev ▲ Next.js 15.0.0-rc.0 - Local: http://localhost:3000 - Environments: .env ✓ Starting... ✓ Ready in 3.3s ○ Compiling /middleware ... ✓ Compiled /middleware in 721ms (227 modules) ○ Compiling /_not-found ... ✓ Compiled /_not-found in 4.9s (463 modules) GET /socket.io?EIO=4&transport=polling&t=P37KhCz 404 in 5344ms ✓ Compiled in 479ms (240 modules) GET /socket.io?EIO=4&transport=polling&t=P37KhCz 404 in 77ms GET /socket.io?EIO=4&transport=polling&t=P37Kk8T 404 in 40ms
项目依赖配置
{ "private": true, "scripts": { "build": "next build", "dev": "next dev", "start": "next start" }, "dependencies": { "@heroicons/react": "^2.1.4", "@tailwindcss/forms": "^0.5.7", "@types/next-auth": "^3.15.0", "@types/pg": "^8.11.6", "@vercel/postgres": "^0.8.0", "autoprefixer": "10.4.19", "bcrypt": "^5.1.1", "clsx": "^2.1.1", "next": "15.0.0-rc.0", "next-auth": "5.0.0-beta.19", "pg": "^8.12.0", "postcss": "8.4.38", "react": "19.0.0-rc-f994737d14-20240522", "react-dom": "19.0.0-rc-f994737d14-20240522", "tailwindcss": "3.4.4", "typescript": "5.5.2", "use-debounce": "^10.0.1", "zod": "^3.23.8" }, "devDependencies": { "@types/bcrypt": "^5.0.2", "@types/node": "20.14.8", "@types/react": "18.3.3", "@types/react-dom": "18.3.0" }, "engines": { "node": ">=20.12.0" } }
排查与解决方向
1. 锁定next-auth beta版本的潜在行为
next-auth 5.0.0-beta版本可能在内部新增了Socket.io相关的实时会话同步逻辑(比如会话状态推送),但当前Next.js 15 RC版本未适配该逻辑,导致请求失败。
- 临时降级next-auth到v4.x稳定版,验证请求是否消失
- 查看next-auth beta版本的更新日志,确认是否有可配置关闭的Socket.io相关特性
2. 排除浏览器端干扰
浏览器缓存的旧资源或第三方扩展可能发起无关请求:
- 使用无痕模式启动项目,观察是否仍有该请求
- 清除浏览器本地存储、缓存后重试
3. 修复Next.js开发环境异常
Next.js 15 RC版本的热更新机制可能存在bug:
- 删除
.next文件夹和node_modules,重新执行pnpm install && pnpm run dev - 切换到生产模式(
pnpm run build && pnpm run start),确认是否有同样问题
4. 检查隐式依赖
排查依赖树中是否有包间接引入Socket.io:
- 执行
pnpm ls socket.io查看是否有隐式安装的相关依赖 - 若发现相关依赖,定位来源包,评估是否替换或降级该包
内容的提问来源于stack exchange,提问作者Dan Tahir
相关产品推荐
相关产品推荐

