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

AJV 8.6.2切换draft-09导出时提示无对应schema引用错误如何解决

问题原因

AJV 8.x的各版本专属命名导出仅内置对应规范版本的核心元schema,不会默认加载其他版本的元schema。你遇到两类报错分别对应两个问题:

  • 切换为draft-09导出后报draft-07 schema找不到,是因为现有schema中仍有$schema字段引用了draft-07的元schema地址,当前AJV实例未注册该schema
  • 你手动切换为draft-09引用后仍报错,是因为draft 2019-09(即俗称的draft-09)的官方元schema标准id为https://json-schema.org/draft/2019-09/schema,你使用的https://json-schema.org/draft-09/schema不是官方标准id,AJV内置的draft-09元schema没有对应这个地址。

解决方案

根据你的使用场景二选一即可:

场景1:所有schema已完全迁移到draft-09规范

将所有schema中的$schema字段值统一修改为标准id https://json-schema.org/draft/2019-09/schema即可。
如果不想批量修改原有schema中的地址,可在实例化AJV后新增别名映射:

import Ajv2019 from "ajv/dist/2019"
const ajv = new Ajv2019()
// 给draft-09的元schema增加别名
ajv.addSchema(ajv.getSchema("https://json-schema.org/draft/2019-09/schema").schema, "https://json-schema.org/draft-09/schema")

场景2:需要同时兼容draft-07和draft-09的schema

在实例化AJV后手动注册draft-07的元schema即可:

import Ajv2019 from "ajv/dist/2019"
import draft7MetaSchema from "ajv/dist/refs/json-schema-draft-07"

const ajv = new Ajv2019()
ajv.addMetaSchema(draft7MetaSchema)
// 如有需要也可以同时加上文的draft-09别名配置

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 05:36:02