【发布时间】:2021-10-02 02:58:09
【问题描述】:
为了提供一些背景知识,我正在尝试为 AJV JSON 模式验证添加正确的模式验证错误消息格式(以掩盖验证错误)。我正在使用 Fastify 中间件。我的目的是根据我的功能要求将默认架构错误验证消息包装到我自己的消息中,以使其对用户友好。
现在我正在使用 Fastify,我将它添加为我的插件的一部分,如下所示:
const fastify = require('fastify')({
ajv: {
customOptions: { allErrors: true, jsonPointers: true },
plugins: [
require('ajv-merge-patch'),
require('ajv-errors'),
]
},
requestIdHeader: 'x-service-request-id',
requestIdLogLabel: 'requestId',
genReqId: function (req) { return random.generate(10) }
});
我正在使用
“ajv 错误”:“^3.0.0” “ajv 合并补丁”:“^4.1.0”, (两者都是 npm 的最新版本)
现在我在 yarn start 中遇到了这个错误:
λ yarn start
yarn run v1.22.10
warning ..\..\..\..\package.json: No license field
$ node src/server.js
node:internal/modules/cjs/loader:930
throw err;
^
Error: Cannot find module 'ajv/dist/compile/codegen'
Require stack:
- service-infra\persistance\node_modules\ajv-errors\dist\index.js
- service-infra\persistance\src\server.js
at Function.Module._resolveFilename (node:internal/modules/cjs/loader:927:15)
at Function.Module._load (node:internal/modules/cjs/loader:772:27)
at Module.require (node:internal/modules/cjs/loader:999:19)
at require (node:internal/modules/cjs/helpers:93:18)
at Object.<anonymous> (service-infra\persistance\node_modules\ajv-errors\dist\index.js:4:19)
at Module._compile (node:internal/modules/cjs/loader:1095:14)
at Object.Module._extensions..js (node:internal/modules/cjs/loader:1124:10)
at Module.load (node:internal/modules/cjs/loader:975:32)
at Function.Module._load (node:internal/modules/cjs/loader:816:12)
at Module.require (node:internal/modules/cjs/loader:999:19) {
code: 'MODULE_NOT_FOUND',
requireStack: [
'service-infra\\persistance\\node_modules\\ajv-errors\\dist\\index.js',
'service-infra\\persistance\\src\\server.js'
]
}
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
我的 node 和 npm 版本是:
节点:16.5.0,npm:7.19.1
我的 fastify 版本是:
"fastify": "^3.19.2",
在安装纱线期间,这是我收到的警告消息:
链接依赖... 警告“ajv-merge-patch@4.1.0”具有未满足的对等依赖性“ajv@>=6.0.0”。 警告“ > ajv-errors@3.0.0”具有未满足的对等依赖关系“ajv@^8.0.1”。
我的计划是在 fastify 注册本身中编写一个验证器作为 schemaErrorFormatter 用于 错误的糖衣。
但是,由于我无法集成 ajv 错误,因此无法继续。
我们将不胜感激。
【问题讨论】:
标签: json-schema-validator fastify ajv