簡體   English   中英

如何使用 swagger-ui-express 加載 YAML 文件?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM