带限制设置的 PayloadTooLargeError

rik*_*iki 9 node.js express body-parser

嗨,我的 Express.js 有问题,我需要向 node.js 发送一个 base64 文件,我的 configuraizone 就是您在下面看到的内容,但是当我发送文件时,我收到此错误:PayloadTooLargeError:请求实体太大!我已经读到您需要像我在下面所做的那样对 body-parsers 设置限制,事实是它不断发生在我身上,我该如何解决这个问题?

节点代码:

const express = require("express");
const myParser = require("body-parser");
//const http = require('http');
const app = express();

//app.use(myParser.json({ type: 'application/*+json' }))
app.use(myParser.json());
app.use(myParser.urlencoded({
    extended: true
}));
app.use(myParser.json({limit: '200mb'}));
app.use(myParser.urlencoded({limit: '200mb', extended: true}));

//Porta predefinita Server
const RunPort = 8988;
//Avvio del server sulla porta specificata
app.listen(RunPort, function () {
    console.log("Serve run on Port: ", RunPort);
})
module.exports = app;
Run Code Online (Sandbox Code Playgroud)

Mar*_*nde 26

在您的代码中,您两次调用了bodyParser.json()& bodyParser.urlencoded(),问题在于 withlimit是在没有选项的调用之后,默认为100kb。因此,当您发布大于100kb该错误的内容时,将抛出错误,因为第一个解析器不会转到下一个中​​间件。

你不应该打bodyParser[method]两次电话。

消除:

app.use(myParser.json());
app.use(myParser.urlencoded({
    extended: true
}));
Run Code Online (Sandbox Code Playgroud)

然后离开:

app.use(myParser.json({limit: '200mb'}));
app.use(myParser.urlencoded({limit: '200mb', extended: true}));
Run Code Online (Sandbox Code Playgroud)

根据您发布base64字符串的方式,您可能需要使用:

app.use(myParser.text({ limit: '200mb' });
Run Code Online (Sandbox Code Playgroud)

  • 对于较新的 Express 应用程序,我们可以这样做: app.use(express.json({ limit: '200mb' }) (3认同)