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

Angular 8升级至12后生产构建报错:Class static blocks are not supported yet

解决Angular 8升级到12后生产构建的Class static blocks错误

错误原因分析

构建报错提示Class static blocks are not supported yet,核心问题如下:

  • 依赖版本不一致:当前@angular-devkit/core和@angular-devkit/schematics仍停留在7.3.10版本,与Angular 12的CLI版本不兼容,导致构建流程中语法转译逻辑异常。
  • 存在过时依赖:@angular/http是Angular 7的废弃依赖,其内部代码可能引入了未被正确转译的ES2022语法(Class static blocks),而Angular 12默认使用的esbuild版本对该语法支持不足。

解决方案

1. 统一Angular Devkit依赖版本

将@angular-devkit/core和@angular-devkit/schematics升级到与Angular CLI一致的12.2.18版本:

npm install @angular-devkit/core@12.2.18 @angular-devkit/schematics@12.2.18 --save-dev

2. 移除过时的@angular/http依赖

Angular 4.3+已使用@angular/common/http替代@angular/http,直接卸载该废弃依赖:

npm uninstall @angular/http

同时检查项目代码,将所有@angular/http的导入替换为@angular/common/http,例如:

// 旧代码
import { Http } from '@angular/http';

// 替换为
import { HttpClient } from '@angular/common/http';

并同步更新服务注入和调用逻辑。

3. 调整esbuild优化配置(可选)

若前两步执行后仍报错,可在angular.json中调整esbuild的目标环境,确保其支持Class static blocks语法:
在项目生产构建配置中添加esbuild目标设置:

"projects": {
  "your-project-name": {
    "architect": {
      "build": {
        "configurations": {
          "production": {
            "optimization": {
              "scripts": {
                "esbuild": {
                  "target": "es2019"
                }
              }
            }
          }
        }
      }
    }
  }
}

若问题仍存在,可临时禁用脚本优化(仅用于排查,不建议长期使用):

"optimization": {
  "scripts": false,
  "styles": true,
  "fonts": true
}

4. 清理依赖并重新安装

执行以下命令清理缓存并重新安装依赖,确保版本完全同步:

rm -rf node_modules package-lock.json
npm install

验证

完成上述步骤后,重新执行生产构建命令:

ng build --prod

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 03:10:29