You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Next.js 10迁移至13:使用concurrently运行时出现模块未找到错误

Next.js 10 → 13 迁移后开发环境问题排查与修复

核心问题

你的dev脚本里,server命令先执行next build再启动后端,同时又运行next dev,两个进程同时读写.next目录,直接引发文件资源冲突,这就是「Module not found」错误的根源。另外分开启动时服务端变更客户端无感知,是因为开发模式下前后端热更新没有配置联动。

修复方案

1. 重构package.json脚本

开发模式下完全不需要先执行next build,直接分别启动前后端开发服务即可,修改后的脚本如下:

"scripts": {
  "start_dev": "nodemon --inspect -w ./src/server -w ./src/server.js -w ./src/start.js ./src/start.js",
  "build": "next build",
  "client:dev": "next dev",
  "server:dev": "npm run start_dev",
  "dev": "npx concurrently -k \"npm run server:dev\" \"npm run client:dev\"",
  "start": "npm run build && npm run start_dev"
}
  • 将原server命令拆分为server:dev,移除前置的next build,避免开发阶段的编译冲突
  • start命令保留build+启动后端的逻辑,专门用于生产环境启动

2. 适配Next.js 13与Express的集成

Next.js 13的路由机制(App Router/Pages Router)与旧版本存在差异,检查你的Express服务代码:

  • 若使用Pages Router:确认next/server的导入路径正确(旧版本的next/dist/server/next-server在13中已废弃)
  • 若使用App Router:调整静态资源、API路由的代理逻辑,确保Express能正确转发请求到Next.js

3. 配置前后端热更新联动

要让服务端代码变更时客户端自动感知,可做以下操作:

  • 给nodemon添加共享代码目录的监听(如果存在前后端共用代码):
    "start_dev": "nodemon --inspect -w ./src/server -w ./src/shared -w ./src/server.js -w ./src/start.js ./src/start.js"
    
  • 若无共享代码,可在next.config.js中配置webpack热更新触发规则,让后端变更时触发客户端重新编译

4. 清理缓存后重新测试

先清除旧缓存再启动服务,避免残留问题:

rm -rf .next node_modules package-lock.json
npm install
npm run dev

验证步骤

  1. 执行npm run dev,检查客户端是否还出现「Module not found」错误
  2. 修改服务端代码(比如某个API逻辑),观察客户端是否自动刷新或重新编译
  3. 测试页面跳转、API请求是否正常工作

内容的提问来源于stack exchange,提问作者Aakash Thakur

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 18:55:12