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

Next.js 12升级后Monorepo构建报错:Module parse failed

Next.js 11→12.2.5升级后next build报错「Module parse failed: Unexpected token」修复方案

核心问题

单仓项目(含api、web模块)升级Next.js后,内置Webpack loader规则被干扰,导致TSX/TS文件无法被正确解析。

修复步骤

1. 修正next.config.js的Webpack配置

Next.js 12自带TS/TSX的默认处理逻辑,自定义配置时不要覆盖默认的module.rules,仅按需添加规则:

// web/next.config.js
module.exports = {
  webpack: (config) => {
    // 仅添加自定义loader,不要替换config.module.rules数组
    // config.module.rules.push(/* 你的自定义规则 */);
    return config;
  },
};

2. 移除冗余的独立Webpack配置文件

如果项目根目录或web目录外存在webpack.config.js,会干扰Next.js的内置配置,直接删除该文件即可。

3. 校验tsconfig.json关键配置

确保TS配置符合Next.js 12要求,重点排除api模块避免无关文件被处理:

{
  "compilerOptions": {
    "target": "es5",
    "lib": ["dom", "dom.iterable", "esnext"],
    "allowJs": true,
    "skipLibCheck": true,
    "strict": true,
    "forceConsistentCasingInFileNames": true,
    "noEmit": true,
    "esModuleInterop": true,
    "module": "esnext",
    "moduleResolution": "node",
    "resolveJsonModule": true,
    "isolatedModules": true,
    "jsx": "preserve",
    "incremental": true
  },
  "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx"],
  "exclude": ["node_modules", "../api"]
}

4. 清理或修正Babel配置

Next.js 12依赖内置Babel预设,自定义.babelrc或babel.config.json易引发冲突:

  • 先重命名.babelrc为.babelrc.bak,测试next build是否正常
  • 若需保留Babel配置,仅保留Next.js预设:
{
  "presets": ["next/babel"]
}

5. 重置依赖环境

删除旧依赖文件后重新安装,避免版本冲突:

# 进入web目录执行
rm -rf node_modules package-lock.json
npm install

6. 检查文件与导入规范

确认所有TSX/TS文件扩展名正确,导入路径无拼写错误,避免Next.js无法识别文件类型。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 19:18:36