规范中未定义任何操作! -即使设置了摇摇晃晃并定义了终点,我仍然收到此错误

时间:2019-06-26 21:51:22

标签: swagger-ui swagger-node-express

我正在尝试使用swagger npm软件包在节点应用程序顶部设置swagger。我的端点和挥杆设置都很完美(至少几乎完美),我确实做了很多关于问题出在哪里的研究,但我找不到踪迹。 我昂首阔步的安装文件:

const express = require('express');
const path = require('path');
const cookieParser = require('cookie-parser');
const bodyParser = require('body-parser');
const swaggerJSDoc = require('swagger-jsdoc');
const swaggerUi = require('swagger-ui-express');
const abc= require('./routes/abc');
var app = express();

const swaggerDefinition = {
    info: {
        title: 'Analytics Project',
        version: '1.0.0',
        description: 'Analytics API swagger documentation'
    }
};
const options = {
    swaggerDefinition,
    apis: ['./routes/abc.js']
};

const swaggerSpec = swaggerJSDoc(options);

var api = require('./routes/abc');
app.use('/', api);
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cookieParser());
app.use('/api/v1/abc', abc);
app.use('/api/v1/abc/scatter', abc);
app.use('/api-docs', swaggerUi.serve, swaggerUi.setup(swaggerSpec));
module.exports = app;

我的终点在./routes/abc.js中定义:

var express = require('express');
var router = require('express').Router();
const request = require('request');

/**
 * @swagger
 * /:
 *   get:
 *     description:  Endpoint for everything
 */
router.get('/', function(req, res, next) { //End point1
    res.send('hello from dataservice');
  });

/**
 * @swagger
 * /scatter:
 *   post:
 *    description:  Endpoint for all variations of scatter plots
 */
router.post('/scatter', function(req, res, next) { //end point2
    res.json({users: [{name: 'Timmy'}]});
  });
module.exports = router;

我希望2个端点显示在页面上。但是我得到的是“规范中未定义任何操作!”错误。我想念什么?任何帮助表示赞赏。

5 个答案:

答案 0 :(得分:2)

使api这样的完整路径apis: [__filename], 对我有用

答案 1 :(得分:2)

对我来说,当我像下面这样添加 paths 时它起作用了

 * @swagger
 * paths:
 *  /auth/login:
 *    post:

答案 2 :(得分:1)

您的路线引用方式可能存在问题。引用必须始终从应用程序的根目录开始。因此必须将'./routes/abc.js'更改为'the-folder-name-in-root/routes/abc.js'

答案 3 :(得分:1)

尝试将 apis 路径从 apis: ['./routes/abc.js'] 更改为 apis: [`${__dirname}/routes/abc.js`] 以使其成为根文件夹的完整路径。这对我有用。

答案 4 :(得分:0)

我通过将 URL 从 "../api/controllers/userController.js" 更改为 "./src/api/controllers/userController.js" 解决了这个问题。 因此,您必须输入从根文件夹开始的 URL。