我将在nodejs应用程序中创建其余端点,如下所示:
在我的server.js中,我有以下代码:
var express = require('express');
var app = express();
app.use(express.json({ limit: '50mb' }));
app.use(express.urlencoded({ limit: '50mb', extended: true }));
app.use(require('./routes/APIRoutes'));
我还尝试了下面的代码,而不是按照潜在重复问题的建议使用express.json和expres.urlencoded。
var app = express();
var bodyParser = require('body-parser');
app.use(bodyParser.json({ limit: '50mb' }));
app.use(bodyParser.urlencoded({ limit: '50mb', extended: true }));
app.use(require('./routes/APIRoutes'));
在我的APIRoutes文件中,我有以下代码:
/* --- INIT --- */
var express = require('express');
var router = express.Router();
var bodyParser = require('body-parser');
router.use(bodyParser.json({ limit: '50mb' }));
router.use(bodyParser.urlencoded({ limit: '50mb', extended: true }));
var urlencodedParser = bodyParser.urlencoded({ limit: '50mb', extended: true });
router.post('...', urlencodedParser, function (req, res) {
...
});
我尝试了不同的组合和顺序以将限制设置得更高。但是目前,每次我发送2kb的有效负载时,都会返回413错误(“有效负载过大”)。
任何帮助设置极限的正确位置是什么?
答案 0 :(得分:3)
我在建议的TKJohn副本的一个不可接受的答案中找到了解决问题的方法。 我必须添加参数限制,以便我的代码变为:
var app = express();
var bodyParser = require('body-parser');
app.use(bodyParser.json({ limit: '50mb' }));
app.use(bodyParser.urlencoded({ limit: '50mb', extended: true, parameterLimit: 50000 }));
添加后它起作用了!
我也是ablo从APIRoutes.js删除代码
router.use(bodyParser.json({ limit: '50mb' }));
router.use(bodyParser.urlencoded({ limit: '50mb', extended: true }));
答案 1 :(得分:2)
这对我有用
this.express.use(bodyParser.json({ limit: '50mb' }));
this.express.use(bodyParser.urlencoded({ limit: "50mb" ,extended: true, parameterLimit: 50000 }));
答案 2 :(得分:1)
尝试在线查看了过去几个小时,但没有找到解决413有效载荷的方法
在body-parser模块中的 urlencoded.js 中进行了分析,还有其他一些限制选项。
如果参数或数组大小超过默认授予的限制(数组大小为100),则parameterLimit 和 arrayLimit 之类的选项将被修改。
答案 3 :(得分:0)
如果您使用的是最新版本的express
,则可以在express
中直接使用。
let express = require('express');
let app = express();
app.use(express.json({limit: '50mb', extended: true}));
app.use(express.urlencoded({limit: "50mb", extended: true, parameterLimit:50000}));
请注意,这仅适用于与express
捆绑在一起的bodyParser
版
(bodyParser
在版本4.16.0中被添加回express
)
答案 4 :(得分:0)
我遇到了同样的错误。我已经尝试了所有这些建议或解决方案,但未能奏效。
你在上传文件吗?
就我而言,我使用的是 multer 并使用它上传文件。
解决这个问题的简单方法是不设置 Content-Type。
我的问题是我在标题上设置了:Content-Type: application/json
并且我 [正在] 使用 multer:
所以我的应用程序试图在解决方案时将上传的音频文件解析为 JSON:
...
app.use(express.json({limit: '50mb', extended: true}));
app.use(express.urlencoded({limit: "50mb", extended: true, parameterLimit:50000}));
...
...被使用和/或服务器在删除时抱怨大负载。
目前,我的代码正在运行
在我的代码中,根据我的应用案例(文件上传),上述解决方案失败了:
const express = require('express');
...
const app = express();
app.use(express.json());
...
...它正在工作,因为我删除了邮递员标题上的 Content-Type。
确保您在发送请求时没有在标头上使用 Content-Type。如果你想知道我也没有在 express 应用程序(API)上设置它。