22

Hi I have a problem with Express.js, I need to send a base64 file to node.js, my configuraizone is what you see below, but when I send the file I get this error: PayloadTooLargeError: request entity too large! I've read that you need to set the limit on body-parsers like I did below, the fact is that it keeps happening to me how can I solve this?

Node Code:

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;
riki
  • 1,502
  • 5
  • 17
  • 45

1 Answers1

48

In your code you have called twice to bodyParser.json() & bodyParser.urlencoded(), the problem is that the one with limit is after the call without options, which defaults to 100kb. So when you POST something greater than 100kb that error will be thrown, since the first parser will not go to the next middleware.

You shouldn't call bodyParser[method] twice.

Remove:

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

And leave:

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

Depending on how you're posting the base64 string, you may want to use:

app.use(myParser.text({ limit: '200mb' }));
Marcos Casagrande
  • 37,983
  • 8
  • 84
  • 98
  • 17
    for newer express app, we can make it like this: app.use(express.json({ limit: '200mb' }) – Linc Feb 27 '20 at 11:11
  • When I leave those limits, the request, having problem before, just not coming, it's being interrupted/stopped somehow I guess. @Linc your suggestion has also same problem. I mean my problematic end point is not triggered at all when using these. – hasany Aug 06 '21 at 11:36