NodeJS Router payload too large
Solution 1
I found the solution for my problem in one of the unaccepted answers of the suggested duplicate of TKJohn. I had to add the parameter limit so that my code became:
var app = express();
var bodyParser = require('body-parser');
app.use(bodyParser.json({ limit: '50mb' }));
app.use(bodyParser.urlencoded({ limit: '50mb', extended: true, parameterLimit: 50000 }));
After the addition it worked!
I was also ablo to remove the code from APIRoutes.js
router.use(bodyParser.json({ limit: '50mb' }));
router.use(bodyParser.urlencoded({ limit: '50mb', extended: true }));
Solution 2
You can use this straightaway in express
if you are using the latest version of 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}));
Please note that this will only work with express
versions bundled with bodyParser
(bodyParser
was added back to express
in release 4.16.0)
Solution 3
This worked for me
this.express.use(bodyParser.json({ limit: '50mb' }));
this.express.use(bodyParser.urlencoded({ limit: "50mb" ,extended: true, parameterLimit: 50000 }));
Solution 4
Tried looking online for past couple of hours and found no solution to 413 Payload
Turns out in urlencoded.js within the body-parser module there are additional options which take care of limits.
Options like parameterLimit and arrayLimit are items to amend if your parameter or array size exceeds the limit that is granted by default (which is 100 for array size).
Stephan Celis
Updated on June 04, 2022Comments
-
Stephan Celis almost 2 years
I'm creating rest endpoints in my nodejs application as follows:
In my server.js I have the following code:
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'));
I also tried the code below instead of using the express.json and expres.urlencoded as suggested on the potential duplicate question.
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'));
In my APIRoutes file I have the following code:
/* --- 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) { ... });
I tried different combinations and orders for setting the limit higher. But currently every time I send a payload of 2kb, I get an 413 "(Payload Too Large)" error back.
Any help what the correct location is for setting the limit?
-
Monkey D. Luffy about 4 yearsI tried using this, But no working for me. express version 4.17
-
Admin over 2 yearsHow do you handle the error when the file size is bigger than that?