设置了限制的PayloadTooLargeError

时间:2018-06-22 13:19:46

标签: node.js express body-parser

您好,我对Express.js有问题,我需要将base64文件发送到node.js,我的configuraizone是您在下面看到的内容,但是当我发送文件时,出现此错误:PayloadTooLargeError:请求实体太大!我读到您需要像下面所做的那样对身体分析器设置限制,事实是它一直在我身上发生,我该如何解决呢?

节点代码:

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;

1 个答案:

答案 0 :(得分:2)

在您的代码中,您两次致电bodyParser.json()bodyParser.urlencoded(),问题是带有limit的那个在没有选项的调用之后,默认为100kb 。 因此,当您发布大于100kb的东西时,将引发该错误,因为第一个解析器将不会进入下一个中间件。

您不应两次致电bodyParser[method]

删除:

app.use(myParser.json());
app.use(myParser.urlencoded({
    extended: true
}));

离开:

app.use(myParser.json({limit: '200mb'}));
app.use(myParser.urlencoded({limit: '200mb', extended: true}));

取决于您发布base64字符串的方式,您可能需要使用:

app.use(myParser.text({ limit: '200mb' });