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

升级至最新NX Workspace后Angular测试转换失败求助

解决NX Angular测试中ES2020语法转ES2015不支持的问题

问题分析

错误提示明确指出:测试过程中尝试将ES2020特性(for-await循环、async生成器函数)转译为ES2015环境,但当前转译工具不支持该操作。尽管你已经调整了tsconfig的target版本,但测试环节的独立配置或转译规则未同步更新,导致问题持续存在。

修复步骤

  • 同步测试配置的目标环境
    检查项目的jest.config.ts或project.json中的测试配置,确保转译工具的目标环境与应用一致(ES2020+):

    // jest.config.ts
    export default {
      transform: {
        '^.+\\.(mjs|js|ts)$': [
          'babel-jest',
          {
            presets: [
              ['@babel/preset-env', { targets: { node: 'current' } }], // 用当前Node版本支持的语法,涵盖ES2020
              '@babel/preset-typescript'
            ]
          }
        ]
      },
      tsConfig: 'apps/your-app/tsconfig.spec.json'
    };
    

    同时在tsconfig.spec.json中明确配置:

    {
      "compilerOptions": {
        "target": "ES2020",
        "lib": ["ES2020", "dom"]
      }
    }
    
  • 跳过已编译库的转译
    feature-flag库已经是ES2020版本,无需再转译。在jest配置中添加忽略规则:

    // jest.config.ts
    export default {
      transformIgnorePatterns: ['/node_modules/feature-flag/']
    };
    
  • 检查NX项目配置的覆盖项
    在project.json的test执行器配置中,确认没有强制设置更低的目标版本:

    "test": {
      "executor": "@nx/jest:jest",
      "options": {
        "tsConfig": "apps/your-app/tsconfig.spec.json",
        "overrideTsConfig": {
          "compilerOptions": {
            "target": "ES2020" // 确保这里没有设为ES2015/ES2017
          }
        }
      }
    }
    
  • 清理缓存重新测试
    运行NX缓存清理命令,避免旧配置残留:

    nx reset
    

    之后重新执行测试:

    nx test your-app-name
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 18:50:29