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

运行ng deploy时出现NOT SUPPORTED: keyword 'id'错误,寻求解决方案

解决Angular ng deploy时的NOT SUPPORTED: keyword "id", use "$id" for schema ID错误

这个问题我之前帮朋友排查过,本质是Angular CLI 13依赖的Ajv(JSON Schema验证库)升级到了7+版本,而Ajv 7开始不再支持旧的"id"关键字,要求改用"$id"。问题通常出在某个第三方依赖的schema文件还在使用旧写法,和CLI的Ajv版本不兼容。给你几个可行的解决方案:

方案1:强制锁定兼容的Ajv版本

这个方法通过resolutions强制让Angular CLI使用支持"id"关键字的Ajv 6.x版本,步骤如下:

  • 首先安装npm-force-resolutions工具(让npm支持resolutions字段):
    npm install -D npm-force-resolutions
    
  • 在你的package.json中添加resolutions字段,锁定Ajv版本:
    "resolutions": {
      "@angular/cli/ajv": "6.12.6"
    }
    
  • 修改package.json的scripts,添加预安装脚本自动执行resolutions:
    "scripts": {
      "preinstall": "npx npm-force-resolutions"
    }
    
  • 删除node_modules文件夹和package-lock.json文件,重新安装依赖:
    rm -rf node_modules package-lock.json
    npm install
    

方案2:更新第三方依赖

你的@angular/fire版本是7.0.2,有可能是这个包的schema文件还在用旧的"id"关键字。试试更新到最新版本:

npm update @angular/fire

如果更新后问题仍存在,可以排查其他第三方依赖,看看有没有哪个包的schema文件使用了"id",你可以临时修改该文件把"id"替换成"$id"测试,或者给对应的包提issue要求修复。

方案3:临时降级Angular CLI(不推荐,仅应急)

如果上面的方法都不生效,可以考虑降级到Angular CLI 12.x版本(12版本依赖的Ajv还支持旧的"id"关键字):

npm install @angular/cli@12.2.18

记得同步把其他Angular相关依赖(比如@angular-devkit/build-angular等)也降级到12.x版本,避免版本不兼容。

完成上面任意一个方案后,再执行ng deploy应该就能解决这个错误了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.01 02:44:08