我有以下问题 - 我正在使用 swagger-ui-express,当我不在开发环境中时,我面临着 swagger 的解析问题;
{"message":"Parsing swagger document failed. SyntaxError: Unexpected token :"}
Run Code Online (Sandbox Code Playgroud)
这是在我的 swagger.js 中:
const {developmentEnv} = config;
const swaggerFile = developmentEnv
? jsYaml.safeLoad(fs.readFileSync('./src/api/swagger.yml'))
: require('../../api/swagger.yml');
Run Code Online (Sandbox Code Playgroud)
我认为,问题在于require。Yaml 似乎是这里的问题。有人可以帮我解决这个问题吗?
kav*_*gun 10
这里的问题是需要 .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`));
Run Code Online (Sandbox Code Playgroud)
在您的情况下,您可以通过导入模块yamljs编写如下代码:
首先,npm install yamljs
const swaggerFile = developmentEnv ? YAML.load('swagger-config.yaml') : require('./swagger.json');
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
14981 次 |
最近记录: |