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

修复Npm audit问题导致Angular 14项目构建失败求助

解决Angular 14中loader-utils/terser安全漏洞修复后的构建错误(Ajv is not a constructor)

问题背景

维护的Angular 14应用存在loader-utils和terser的安全漏洞,尝试过以下操作修复:

  • 执行 npm audit fix --force
  • 安装最新版terser:npm install terser@latest
  • 安装最新版loader-utils:npm install loader-utils@latest
  • 在package.json添加resolutions字段锁定terser和loader-utils版本,执行 npx npm-force-resolutions

目前npm audit已无安全问题,但项目构建时抛出错误:

[error] TypeError: Ajv is not a constructor
    at Object.<anonymous> (C:\Projects\scenic.booking.portal.ui\node_modules\mini-css-extract-plugin\node_modules\schema-utils\dist\validate.js:66:13)
    at Module._compile (node:internal/modules/cjs/loader:1103:14)
    at Object.Module._extensions..js (node:internal/modules/cjs/loader:1157:10)
    at Module.load (node:internal/modules/cjs/loader:981:32)
    at Function.Module._load (node:internal/modules/cjs/loader:822:12)
    at Module.require (node:internal/modules/cjs/loader:1005:19)
    at require (node:internal/modules/cjs/helpers:102:18)
    at Object.<anonymous> (C:\Projects\scenic.booking.portal.ui\node_modules\mini-css-extract-plugin\node_modules\schema-utils\dist\index.js:6:5)
    at Module._compile (node:internal/modules/cjs/loader:1103:14)
    at Object.Module._extensions..js (node:internal/modules/cjs/loader:1157:10)

相关环境版本:

  • npm: 9.1.2
  • @angular-devkit/core: 14.0.1
  • rxjs: 7.5.5
  • typescript: 4.7.3

解决方案

1. 锁定兼容的依赖版本

错误源于mini-css-extract-plugin依赖的schema-utils与高版本Ajv不兼容(Ajv v8+改用ES模块,旧版schema-utils用CommonJS导入)。在package.json的resolutions中添加以下配置:

"resolutions": {
  "schema-utils": "^3.3.0",
  "ajv": "^6.12.6",
  "loader-utils": "^2.0.4",
  "terser": "^5.16.1"
}

这些版本的优势:

  • schema-utils@3.3.0 适配Angular 14构建链,稳定兼容Ajv v6
  • Ajv@6.12.6 是schema-utils@3.x的指定依赖,可避免构造函数错误
  • loader-utils@2.0.4 和 terser@5.16.1 已修复安全漏洞,同时兼容Angular 14

2. 重装依赖

执行以下命令清理旧依赖并重新安装:

# Linux/macOS
rm -rf node_modules package-lock.json
npx npm-force-resolutions
npm install

# Windows
rmdir /s /q node_modules
del package-lock.json
npx npm-force-resolutions
npm install

3. 验证构建

运行构建命令确认问题解决:

ng build

备选方案:升级Angular CLI核心依赖

如果上述方案无效,可升级@angular-devkit/core到14.x最新补丁版本(如14.2.10),新版本已修复依赖兼容问题:

npm install @angular-devkit/core@~14.2.0 --save-dev

完成后重新执行依赖安装和构建步骤。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 02:30:45