index.js 文件
“使用严格”;
var path = require('path');
var http = require('http');
var cors = require('cors');
var oas3Tools = require('oas3-tools');
require("dotenv").config({ path: ".env" });
console.log(`### Running on ~~~ ${process.env.Instance} ~~~ ENV ###`);
var serverPort = 8080;
function validate(request, scopes, schema) {
// security stuff here
return true;
}
// swaggerRouter configuration
var options = {
routing: {
controllers: path.join(__dirname, './controllers')
},
logging: {
format: 'combined',
errorLimit: 400
},
};
var expressAppConfig = oas3Tools.expressAppConfig(
path.join(__dirname, "./api/openapi.yaml"),
options
);
expressAppConfig.addValidator();
var app = expressAppConfig.getApp();
app.use(cors());
var json2xls = require('json2xls');
app.use(json2xls.middleware);
// Initialize the Swagger middleware
http.createServer(app).listen(serverPort, function () {
});
// Connect to database
var mongo = require("./utils/db");
----------------------------------------EOF-------- --------------------------------------
PFB 我们使用的工具的版本。 "快递": "^4.17.1", “oas3-tools”:“2.1.3”
我尝试过 body-parser 和 app.use(express.json({limit:'25mb'}))。 但没有解决请求实体太大错误。 如果有人建议我任何不同的解决方案,那就太好了。
这对我有用:
app._router.stack = app._router.stack.filter((i) => i.name !== 'jsonParser');
app.use(bodyParser.json({ limit: 5 * 1024 * 1024 }));
您可以在app._router.stack中看到所有中间件,其中由expressAppConfig函数(express.app.config.js)填充。
我发现当你使用 bodyParser.json() 时,它会向该堆栈添加另一个中间件层 - 但根据我的观察,express 将使用第一个中间件层。这就是为什么我在设置限制之前删除了所有 jsonParser 。
我可以通过在任何其他中间件之前配置 body-parser 中间件来使其工作,而不是手动过滤中间件堆栈以删除默认的 JSON 解析器。这确保了使用自定义主体解析器配置。
看起来是这样的:
const express = require('express');
const bodyParser = require('body-parser');
const app = express();
// Use body-parser with higher payload limits
app.use(bodyParser.json({ limit: '5mb' }));
app.use(bodyParser.urlencoded({ extended: true, limit: '5mb' }));
// swaggerRouter configuration
var options = {
routing: {
controllers: path.join(__dirname, './controllers')
},
};
// Initialize the Swagger router
var expressAppConfig = oas3Tools.expressAppConfig(path.join(__dirname, 'api/openapi.yaml'), options);
// Apply CORS middleware to /api routes
app.use('/api', cors({
origin: 'http://localhost',
optionsSuccessStatus: 200
}), expressAppConfig.getApp());
app.listen(3000, () => {
console.log('Server is running on port 3000');
});