部署时获取空路径是 swagger 的关键。当地正在工作
Getting empty paths key in swagger when deployed. Local is working
我正在使用 swagger-jsdoc
。一切似乎都很好,我得到 json 直到我使用 localhost
,当我使用 live url 时,它在路径键中没有给我任何东西,即
{
"info": {
"title": "App API",
"version":"0.0.0",
"description":"Server API documentation"
},
"host":"something.com",
"basePath":"/",
"schemes":["https"],
"swagger":"2.0",
"paths":{},
"definitions":{},
"responses":{},
"parameters":{},
"securityDefinitions":{},
"tags":[]
}
这就是我要直播的内容。相同的代码适用于 localhost/swagger.json
,但不适用于 https://something.com/swagger.json
var swaggerJSDoc = require('swagger-jsdoc');
var swaggerOptions = {
swaggerDefinition: config.swaggerDefinition || {
info: { // API informations (required)
title: 'Hello World', // Title (required)
version: '1.0.0', // Version (required)
description: 'A sample API', // Description (optional)
},
host: 'localhost:3000', // Host (optional)
basePath: '/', // Base path (optional)
},
apis: ['./routes/*.js'], // Path to the API docs
};
var swaggerSpec = swaggerJSDoc(swaggerOptions);
router.get('/swagger.json', function(req, res) {
res.setHeader('Content-Type', 'application/json');
res.send(swaggerSpec);
});
问题可能是您在 config.swaggerDefinition
中的主机选项有问题。是否设置为正确的域?
我运行之前也遇到过同样的问题。如果您使用的是 pm2,您可能会遇到与我相同的问题。
就我而言,当我将 apis
中的 paths
改为使用
时,问题得到解决
apis: [ './routes/*.js' ]
进入
apis: [ __dirname + 'routes/*.js' ]
所以使用 __dirname
而不是 .
希望对您有所帮助!
这个问题是由于路由的路径引起的。
我正在使用 apis: [ './routes/*.js' ]
但是我的服务器有路径 ./bin/www
所以在这些情况下 ./routes
根本不起作用,实现这个的最好方法是使用 __dirname
代替。
例如
apis: [`${__dirname}/routes/*.js`]
我当天就解决了,但是忘记在这里添加答案了。
我正在使用 swagger-jsdoc
。一切似乎都很好,我得到 json 直到我使用 localhost
,当我使用 live url 时,它在路径键中没有给我任何东西,即
{
"info": {
"title": "App API",
"version":"0.0.0",
"description":"Server API documentation"
},
"host":"something.com",
"basePath":"/",
"schemes":["https"],
"swagger":"2.0",
"paths":{},
"definitions":{},
"responses":{},
"parameters":{},
"securityDefinitions":{},
"tags":[]
}
这就是我要直播的内容。相同的代码适用于 localhost/swagger.json
,但不适用于 https://something.com/swagger.json
var swaggerJSDoc = require('swagger-jsdoc');
var swaggerOptions = {
swaggerDefinition: config.swaggerDefinition || {
info: { // API informations (required)
title: 'Hello World', // Title (required)
version: '1.0.0', // Version (required)
description: 'A sample API', // Description (optional)
},
host: 'localhost:3000', // Host (optional)
basePath: '/', // Base path (optional)
},
apis: ['./routes/*.js'], // Path to the API docs
};
var swaggerSpec = swaggerJSDoc(swaggerOptions);
router.get('/swagger.json', function(req, res) {
res.setHeader('Content-Type', 'application/json');
res.send(swaggerSpec);
});
问题可能是您在 config.swaggerDefinition
中的主机选项有问题。是否设置为正确的域?
我运行之前也遇到过同样的问题。如果您使用的是 pm2,您可能会遇到与我相同的问题。
就我而言,当我将 apis
中的 paths
改为使用
apis: [ './routes/*.js' ]
进入
apis: [ __dirname + 'routes/*.js' ]
所以使用 __dirname
而不是 .
希望对您有所帮助!
这个问题是由于路由的路径引起的。
我正在使用 apis: [ './routes/*.js' ]
但是我的服务器有路径 ./bin/www
所以在这些情况下 ./routes
根本不起作用,实现这个的最好方法是使用 __dirname
代替。
例如
apis: [`${__dirname}/routes/*.js`]
我当天就解决了,但是忘记在这里添加答案了。