AJV:没有带有密钥或参考“https://json-schema.org/draft-07/schema”的模式

Ada*_*dam 8 ajv

我使用的是ajv 8.6.2

我有使用默认导出针对 Draft-07 进行验证的架构

当我使用Draft-09 导出时,我的所有架构都会出现此错误:

no schema with key or ref "https://json-schema.org/draft-07/schema"
Run Code Online (Sandbox Code Playgroud)

如果我使用这个,也会出现同样的错误:

no schema with key or ref "https://json-schema.org/draft-09/schema"
Run Code Online (Sandbox Code Playgroud)

似乎无法弄清楚这里发生了什么?

小智 7

AJV 似乎不支持 HTTPs 版本的 json-schema 标识符;尝试使用http:

{
    "$schema": "http://json-schema.org/draft-07/schema"
}
Run Code Online (Sandbox Code Playgroud)


Zde*_*k F 6

如果你的意思是

当我使用 Draft-09 导出全部时

您正在使用Ajv2019实例

import Ajv2019 from "ajv/dist/2019"
const ajv = new Ajv2019()
Run Code Online (Sandbox Code Playgroud)

然后你需要添加draft-07元模式:

const draft7MetaSchema = require("ajv/dist/refs/json-schema-draft-07.json")
ajv.addMetaSchema(draft7MetaSchema)
Run Code Online (Sandbox Code Playgroud)

https://ajv.js.org/guide/schema-language.html#draft-2019-09-and-draft-2020-12中所述

仅供参考,不要使用 引用 JSON 元模式https://,它们的标识符确实以 开头http://ajv不会检索它们,而是将它们打包。