'AJV: no schema with key or ref "https://json-schema.org/draft-07/schema"

I am using ajv 8.6.2

I have schemas that validate against draft-07 using the default export

When I use the draft-09 export all of my schemas give me this error:

no schema with key or ref "https://json-schema.org/draft-07/schema"

Same error exists if I use this:

no schema with key or ref "https://json-schema.org/draft-09/schema"

Can't seem to figure out what's going on here?

ajv


Solution 1:[1]

AJV does not seem to support HTTPs versions of the json-schema identifiers; try using http: instead:

{
    "$schema": "http://json-schema.org/draft-07/schema"
}

Solution 2:[2]

If you mean by

When I use the draft-09 export all

that you're using Ajv2019 instance

import Ajv2019 from "ajv/dist/2019"
const ajv = new Ajv2019()

then you need to add the draft-07 metaschema:

const draft7MetaSchema = require("ajv/dist/refs/json-schema-draft-07.json")
ajv.addMetaSchema(draft7MetaSchema)

as explained at https://ajv.js.org/guide/schema-language.html#draft-2019-09-and-draft-2020-12

FYI, don't refer to JSON meta schemas with https://, their identifiers do start with http://, ajv doesn't retrieve them, it packages them instead.

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Yossarian21
Solution 2 Zdenek F