【问题标题】:PayloadTooLargeError with Limit Set设置了限制的 PayloadTooLargeError
【发布时间】:2018-06-22 13:19:45
【问题描述】:

您好,我遇到了 Express.js 的问题,我需要向 node.js 发送一个 base64 文件,我的 configuraizone 如下所示,但是当我发送文件时出现此错误:PayloadTooLargeError: request entity too large !我读到您需要像我在下面所做的那样设置正文解析器的限制,事实是它一直发生在我身上,我该如何解决这个问题?

节点代码:

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;

【问题讨论】:

    标签: node.js express body-parser


    【解决方案1】:

    在您的代码中,您已经调用了两次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' }));
    

    【讨论】:

    • 对于较新的 express 应用,我们可以这样:app.use(express.json({ limit: '200mb' })
    • 当我离开这些限制时,请求,之前有问题,只是没有来,我猜它被中断/停止了。 @Linc 你的建议也有同样的问题。我的意思是使用这些时根本不会触发我有问题的端点。
    猜你喜欢
    • 1970-01-01
    • 2019-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多