Мои swagger-jsdoc
и swagger-ui-express
настройки для документирования моего экспресс-приложения, по-видимому, не могут прочитать или сослаться на файлы YAML, на которые я указываю их
Я все еще учусь документировать API, и я использовал эту статью https://www.codementor.io/peteradeoye/splitting-your-swagger-spec-into-multiple-files-in-a-node-project-nuprc0mej в качестве руководства, но я не могу воспроизвести желаемые результаты
Это мой app.js
import 'core-js/stable';
import 'regenerator-runtime/runtime';
import express from 'express';
import bodyParser from 'body-parser';
import cors from 'cors';
import swaggerUI from 'swagger-ui-express';
import swaggerSpec from './config/swagger';
import allRoutes from './routes';
const app = express();
app.use('/api-docs', swaggerUI.serve, swaggerUI.setup(swaggerSpec));
app.use(cors());
app.use(bodyParser.urlencoded({
extended: true,
}));
app.use(bodyParser.json());
allRoutes(app);
export default app;
Это мой чванский конфиг на ./config/swagger
const swaggerJSDoc = require('swagger-jsdoc');
const swaggerDefinition = {
info: {
title: 'REST API for Wayfarer', // Title of the documentation
version: '1.0.0', // Version of the app
description: 'This is the REST API for Wayfarer (a public bus transportation booking server.)', // short description of the app
},
host: 'localhost:3000', // the host or url of the app
basePath: '/api/v1', // the basepath of your endpoint
};
// options for the swagger docs
const options = {
// import swaggerDefinitions
swaggerDefinition,
// path to the API docs
apis: ['./docs/**/*.yaml'],
};
// initialize swagger-jsdoc
export default swaggerJSDoc(options);
и это один из ямлов, на которые я ссылаюсь на ./docs/user.yaml
paths:
/auth/signup: # path of the user from your endpoint
post: # endpoint request type (post request)
tags: # Tag property
- User # Value of the tag
summary: creates a new user
produces:
- application/json
parameters: # request parameters
- in: body # request body
name: sign up # name of the request, can be any name
description: It enables a user to create an account
required: false # can also be true depending on user preference
schema: # Schema definition
$ref: '#/definitions/signUp'
responses: # server responses
201:
description: An object with user details
definitions: # Schema definition for the request body
signUp:
type: object
properties:
username:
type: string
email:
type: string
password:
type: string
Я ожидал увидеть некоторую информацию, которая будет отображаться при попытке просмотреть мою документацию, но в моем браузере отображается No operations defined in the spec
. Мне удалось сузить проблему до
...
const options = {
// import swaggerDefinitions
swaggerDefinition,
// path to the API docs
apis: ['./docs/**/*.yaml'],
};
...
Почему-то
...
apis: ['./docs/**/*.yaml'],
};
...
просто отказывается работать, я тоже переименовал папку docs
, и это не помогло.
Я переместил папку docs
в корень моего проекта, сообщение об ошибке изменилось на Error: TypeError: Cannot convert undefined or null to object