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

Next.js 12编译出现regenerator: complex pattern in catch clause报错

错误诱因

该报错为Next.js 12默认绑定的SWC编译器的已知兼容缺陷导致,报错信息中的not implemented: regenerator: complex pattern in catch clause已经明确触发逻辑:SWC的ES2015 regenerator转换模块,未实现catch子句中使用解构等复杂匹配模式的转换逻辑。
当你在pages/auth/index.tsx文件中使用了类似如下写法时,就会触发该编译错误:

try {
  // 业务逻辑
} catch ({ message }) { // catch子句内直接解构错误对象,属于复杂匹配模式
  console.log(message)
}
解决方案
  • 优先推荐代码侧修改:将catch子句内的解构逻辑移到代码块内部,修改后的写法如下:
    try {
      // 业务逻辑
    } catch (err) {
      const { message } = err // 移到内部解构
      console.log(message)
    }
    
    修改后重新编译即可直接解决问题,无需改动项目配置,也不会损失SWC的编译速度优势。
  • 临时过渡方案:如果暂时不想调整代码,可以在next.config.js中添加配置禁用SWC,改用Babel编译:
    module.exports = {
      experimental: {
        forceSwcTransforms: false
      }
    }
    
    同时需保证项目根目录存在有效的Babel配置文件,该方案会降低编译速度,仅适合临时过渡使用。
  • 版本升级方案:该缺陷在高版本SWC中已经修复,你可以将Next.js升级到13及以上版本,对应绑定的SWC已支持catch子句的复杂模式匹配,升级后即可兼容原有写法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 08:45:04