![](/img/trans.png)
[英]How to use $ref in swagger file properly while working with swagger-ui-express and swagger-jsdoc
[英]How to load a YAML file with swagger-ui-express?
我有以下問題 - 我正在使用 swagger-ui-express,當我不在開發環境中時,我的 swagger 面臨解析問題;
{"message":"Parsing swagger document failed. SyntaxError: Unexpected token :"}
這是在我的 swagger.js 中:
const {developmentEnv} = config;
const swaggerFile = developmentEnv
? jsYaml.safeLoad(fs.readFileSync('./src/api/swagger.yml'))
: require('../../api/swagger.yml');
我認為,問題在於require 。 Yaml 似乎是這里的問題。 有人可以幫我嗎?
這里的問題是 require.yaml 文件。
文件清楚地說,
要加載 swagger 規范 yaml 文件,您需要使用能夠將 yaml 轉換為 json 的模塊; 例如 yamljs。
這是鏈接https://www.npmjs.com/package/swagger-ui-express#load-swagger-from-yaml-file
例如,試試這個,它有效:
const express = require('express');
const path = require('path');
const pathToSwaggerUi = require('swagger-ui-dist').absolutePath();
const YAML = require('yamljs');
const swaggerDocument = YAML.load('swagger-config.yaml');
console.log(swaggerDocument);
const swaggerJsonDocument = require('./swagger.json');
console.log(swaggerJsonDocument);
const app = express();
app.use(express.static(pathToSwaggerUi))
app.use(express.json());
app.use(express.static(path.join(__dirname, '../views')));
app.get('/', (req, res) => {
res.send(`Hello World!`);
});
app.listen(2000, console.log(`App Listening to port 2000`));
在您的情況下,您可以通過導入模塊yamljs來編寫如下代碼:
首先, npm 安裝 yamljs
const swaggerFile = developmentEnv ? YAML.load('swagger-config.yaml') : require('./swagger.json');
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.