ajv-validator / ajv-validator/ajv-merge-patch

Error: can't resolve reference http://json-schema.org/draft-07/schema#

オープン
#47 コメント 2 件 リアクション 2 件 担当者 0 名 GitHub で見る
主要言語
JavaScript
スター
47
フォーク
19
PR マージ指標
30日以内にマージされた PR はありません

説明

It seems as if there is an out-of-the-box compatibility issue with `Ajv2020` instances of ajv.

When trying to apply the `ajv-merge-patch` keywords, I get...

` Error: can't resolve reference http://json-schema.org/draft-07/schema# from id # at Object.code (/Users/[redacted]/node_modules/ajv/dist/vocabularies/core/ref.js:21:19) at ...`

...which looks like is related to code in `/keywords/add_keyword.js` of this repo where this metaschema is referenced.

Code to reproduce...

```
import Ajv2020 from 'ajv/dist/2020.js';
import ajvMergePatch from 'ajv-merge-patch';

const ajv = new Ajv2020();
ajvMergePatch(ajv);
```

I was able to workaround with the following...

```
import { readFileSync } from 'fs';

import Ajv2020 from 'ajv/dist/2020.js';
import ajvMergePatch from 'ajv-merge-patch';

const ajv = new Ajv2020();

// required by ajv-merge-patch
const draft7MetaUrl = new URL('../node_modules/ajv/dist/refs/json-schema-draft-07.json', import.meta.url);
const draft7MetaSchema = JSON.parse(readFileSync(draft7MetaUrl, 'utf8'));
ajv.addMetaSchema(draft7MetaSchema);

ajvMergePatch(ajv);
```

...but figured I would open issue here to raise visibility.

I know that `ajv` itself indicates there is no cross-compatibility between draft-2020-12 and draft-07 schema within same `ajv` instance, however this does seems to work. At a minimum, I would find it unexpected that a developer using only draft-2020-12 (or draft-2019 for that matter) schemas within their application and wanting to leverage this extension would get such breakage, with reference to a schema they are not even using.

コントリビューションガイド

このリポジトリのコントリビューションガイドは索引されていません

評価

この issue はまだ評価されていません。

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。