Warning on nodeJs console "schema $id ignored..."
Closed this issue · 2 comments
I use express-openapi-validate v0.5.1 and since a while (cannot tell exactly), I get a warning in node console:
schema $id ignored https://github.com/ajv-validator/ajv/blob/master/lib/definition_schema.js
meta-schema not available
This warning is issued while calling the validator with a single option to ignore the OAS spec V3 keyword:
const { OpenApiValidator } = require("express-openapi-validate");
const validator = new OpenApiValidator(openApiDocument, {
ajvOptions: {
nullable: true,
},
});
The document could be any document. To reproduce the problem, we can use the PetStore document attached to the end of this issue.
The url "https://github.com/ajv-validator/ajv/blob/master/lib/definition_schema.js" is no longer available on ajv's Github repo. The problem could be probably solved by upgrading the ajv version in your package.
Thanks!
PetStore document:
openApiDocument = {
openapi: "3.0.0",
info: {
version: "3.0.0",
title: "Swagger Petstore",
},
servers: [
{
url: "http://petstore.swagger.io/v1",
},
],
paths: {
"/pets": {
get: {
summary: "List all pets",
operationId: "listPets",
tags: ["pets"],
parameters: [
{
name: "limit",
in: "query",
description: "How many items to return at one time (max 100)",
required: false,
schema: {
type: "integer",
format: "int32",
},
},
],
responses: {
200: {
description: "A paged array of pets",
headers: {
"x-next": {
description: "A link to the next page of responses",
schema: {
type: "string",
},
},
},
content: {
"application/json": {
schema: {
$ref: "#/components/schemas/Pets",
},
},
},
},
default: {
description: "unexpected error",
content: {
"application/json": {
schema: {
$ref: "#/components/schemas/Error",
},
},
},
},
},
},
post: {
summary: "Create a pet",
operationId: "createPets",
tags: ["pets"],
responses: {
201: {
description: "Null response",
},
default: {
description: "unexpected error",
content: {
"application/json": {
schema: {
$ref: "#/components/schemas/Error",
},
},
},
},
},
},
},
"/pets/{petId}": {
get: {
summary: "Info for a specific pet",
operationId: "showPetById",
tags: ["pets"],
parameters: [
{
name: "petId",
in: "path",
required: true,
description: "The id of the pet to retrieve",
schema: {
type: "string",
},
},
],
responses: {
200: {
description: "Expected response to a valid request",
content: {
"application/json": {
schema: {
$ref: "#/components/schemas/Pet",
},
},
},
},
default: {
description: "unexpected error",
content: {
"application/json": {
schema: {
$ref: "#/components/schemas/Error",
},
},
},
},
},
},
},
},
components: {
schemas: {
Pet: {
type: "object",
required: ["id", "name"],
properties: {
id: {
type: "integer",
format: "int64",
},
name: {
type: "string",
},
tag: {
type: "string",
},
},
},
Pets: {
type: "array",
items: {
$ref: "#/components/schemas/Pet",
},
},
Error: {
type: "object",
required: ["code", "message"],
properties: {
code: {
type: "integer",
format: "int32",
},
message: {
type: "string",
},
},
},
},
},
};
This should now be fixed with the latest v0.6.0 release. Is it working for you @blaisn?
Yes, problem solved after upgrade to 0.6.1
Thanks.