You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Fastify v3升级v4后使用fastify-openapi-glue遇AJV严格模式报错

解决Fastify v4 + fastify-openapi-glue的AJV严格模式错误

问题根源

Fastify v4升级后,AJV的配置方式发生了变化,且fastify-openapi-glue插件默认启用AJV严格模式,而你的OpenAPI Schema中包含example关键字(AJV strict模式下不允许未知关键字),导致验证失败。此外,插件可能不会自动继承Fastify全局的AJV配置,需要显式传递相关选项。

两种可行解决方案

方案1:全局配置Fastify的AJV选项

在创建Fastify实例时,直接配置AJV禁用严格模式,所有依赖AJV的插件都会生效:

const fastify = require('fastify')({
  logger: true,
  ajv: {
    customOptions: {
      strict: false,
      strictSchema: false // 也可单独禁用strictSchema来解决问题
    }
  }
});

方案2:给fastify-openapi-glue插件单独配置AJV

如果不想全局修改AJV配置,可以在注册插件时显式传递ajvOptions:

const path = require('path');
const fastifyOpenapiGlue = require('fastify-openapi-glue');

fastify.register(fastifyOpenapiGlue, {
  specification: path.join(__dirname, '../openapi.yaml'),
  ajvOptions: {
    strict: false,
    strictSchema: false
  }
});

为什么之前的配置被忽略?

Fastify v4将AJV配置统一放在顶级的ajv.customOptions下,而fastify-openapi-glue在v4环境中可能不会自动读取全局AJV配置(插件内部可能创建了独立的AJV实例),因此需要显式在插件注册时传递配置,或者确保全局AJV配置的结构正确。

内容的提问来源于stack exchange,提问作者Markus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 23:51:04