首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ajv-使用Fastify的错误插件会出现错误,因为无法找到模块‘ajv/dist/编译/codegen’

ajv-使用Fastify的错误插件会出现错误,因为无法找到模块‘ajv/dist/编译/codegen’
EN

Stack Overflow用户
提问于 2021-07-26 06:19:54
回答 1查看 13.2K关注 0票数 5

为了给出一些背景,我尝试为AJV JSON模式验证添加正确的模式验证错误消息格式(以保证验证错误)。我正在使用Fastify中间件。我的目的是将默认的模式错误验证消息包装到我自己的消息中,按照我的功能需求,使其对用户友好。

现在,当我使用Fastify时,我将它作为插件的一部分添加如下:

代码语言:javascript
复制
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的最新版本)

现在,我发现纱线开始时出现了这个错误:

代码语言:javascript
复制
λ 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.

我的节点和npm版本是:

节点: 16.5.0,npm:7.19.1

我的时尚版是:

“法西斯”:"^3.19.2",

在纱线安装过程中,我收到的警告消息如下:

连接依赖关系..。警告“ajv-合并补丁@4.1.0”没有满足对等依赖"ajv@>=6.0.0“。警告“>ajv-错误@3.0.0”没有满足对等依赖"ajv@^8.0.1“。

我的计划是在fastify注册本身中编写一个验证器作为schemaErrorFormatter,以防止错误。

然而,由于我无法集成ajv-错误,所以我无法继续。

如能在这方面提供任何帮助,我们将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-07-26 08:21:57

正如您所看到的,问题在于插件版本。

Fastify v3在引擎盖下使用ajv v6,所以您必须安装并使用ajv的插件支持那个版本

所以你需要跑:

代码语言:javascript
复制
npm install ajv-errors@1 

相反,ajv-merge-patch可以作为写在文档里的最后一个版本。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68525310

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档