Swagger - Невозможно прочитать свойство 'get' из неопределенного - PullRequest
2 голосов
/ 09 июля 2019

Я пытаюсь создать документацию о существующем API, используя swagger, но когда я использую openapi, эта ошибка: Не удается прочитать свойство 'get' из undefined отображается в консоли.

Эта ошибка возникает, когда я использую openapi: "3.0.0"

код app.js:

const swaggerUi     = require('swagger-ui-express'), swaggerDocument = require('./swagger.json');
const swaggerJsdoc  = require('swagger-jsdoc');
const express       = require('express');
const cors          = require('cors');
const bodyParser    = require('body-parser');
const handlebars    = require('express-handlebars');
const helmet        = require('helmet');

const app = express();//Here define app for create a middlewares using app.use();

const swaggerOptions = {
    swaggerDefinition: {
        info: {
          title: 'Ágil API',
          version: '1.0.0',
          description: 'Document API with autogenerated swagger doc',
        },
        host: 'localhost:3000',
        basePath: '/',
        components: {
            securitySchemes: {
                BasicAuth: {
                    type: "http",
                    scheme: "basic"
                }
            }
        },
        security: {
            basicAuth: []
        },
        openapi: "3.0.0",
    },
    apis: ['./routes/v1/user.js'],
}

const swaggerSpecs = swaggerJsdoc(swaggerOptions);

app.use('/api-docs', swaggerUi.serve, swaggerUi.setup(swaggerSpecs));

И в маршрут пользователя я делаю этот код:

const express = require('express');
const router = express.Router();
const controller = require('../../controllers/v1/user-controller');

/**
 * @swagger 
 * definition:
 *   login:
 *     properties:
 *       username:
 *         type: string
 *       password:
 *         type: string
 */

/**
 * @swagger 
 * /user/login:
 *   post:
 *     tags:
 *       - User
 *     description: User login
 *     produces:
 *       - application/x-www-form-urlencoded
 *     parameters:
 *       - name: body
 *         description: login object
 *         in: body
 *         required: true
 *         schema:
 *           $ref: '#/definitions/login'
 *       - name: version
 *         description: sistem version
 *         in: header
 *         required: true
 *     responses:
 *       200:
 *         description: "token"
 *       400:
 *          description: Invalid credentials
 */
router.post('/login', controller.login);

изображение из пользовательского интерфейса

изображение с ошибки консоли

...