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

Webpack合并代码后卡在52%构建阶段,求助调试方案

Webpack构建卡在52%,Babel处理ExportDefaultDeclaration时无响应

问题详情

近期完成大规模代码合并后,Webpack在模块构建阶段卡在52%,终端输出:

[52%] building (457/1296 modules)

开启DEBUG=*调试标志后,最后一条Babel日志为:

babel program.body[6] ExportDefaultDeclaration: Recursing into... +0ms

重复执行两次合并操作,问题依旧。本次未新增项目依赖,仅修改了源代码,找不到相关调试资料,寻求解决办法。

排查与解决步骤

  • 定位卡住的具体模块:
    执行webpack --profile --progress --json > stats.json生成构建统计文件,打开后找到进度对应第457个模块的路径,锁定出问题的源码文件。
  • 检查目标模块的默认导出逻辑:
    重点查看该模块的export default部分,排查以下常见问题:
    • 模块间的循环引用:比如A模块默认导出依赖B模块,B模块又反向依赖A模块
    • 无限递归的导出内容:比如导出了一个自引用的对象、无限递归的函数
    • 异常复杂的AST结构:比如嵌套层级极深的对象、包含大量动态计算的导出表达式
  • 临时验证导出代码:
    注释掉该模块的默认导出语句,重新执行构建。如果构建能正常完成,说明问题就出在这个导出部分,再逐步恢复代码片段,定位具体触发点。
  • 调整Babel递归限制:
    在Babel配置文件中增加递归深度限制,示例:
    {
      "parserOpts": {
        "recursionLimit": 2000,
        "plugins": ["jsx"] // 根据项目实际语法添加对应插件
      }
    }
    
  • 排查Babel插件兼容性:
    虽然未新增依赖,但合并的代码可能用到了当前Babel插件版本未完全支持的语法,尝试临时升级或降级@babel/core、对应预设插件(如@babel/preset-env)的版本,验证是否能解决递归处理的死循环问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 18:20:58