I got the following error with bodyParser:
PayloadTooLargeError: request entity too large at readStream (/root/server/node_modules/raw-body/index.js:155:17) at getRawBody (/root/server/node_modules/raw-body/index.js:108:12) at read (/root/server/node_modules/body-parser/lib/read.js:77:3) at urlencodedParser (/root/server/node_modules/body-parser/lib/types/urlencoded.js:116:5) at Layer.handle [as handle_request] (/root/server/node_modules/express/lib/router/layer.js:95:5) at trim_prefix (/root/server/node_modules/express/lib/router/index.js:317:13) at /root/server/node_modules/express/lib/router/index.js:284:7 at Function.process_params (/root/server/node_modules/express/lib/router/index.js:335:12) at next (/root/server/node_modules/express/lib/router/index.js:275:10) at jsonParser (/root/server/node_modules/body-parser/lib/types/json.js:118:7) at Layer.handle [as handle_request] (/root/server/node_modules/express/lib/router/layer.js:95:5) at trim_prefix (/root/server/node_modules/express/lib/router/index.js:317:13) at /root/server/node_modules/express/lib/router/index.js:284:7 at Function.process_params (/root/server/node_modules/express/lib/router/index.js:335:12) at next (/root/server/node_modules/express/lib/router/index.js:275:10) at initialize (/root/server/node_modules/passport/lib/middleware/initialize.js:53:5) at Layer.handle [as handle_request] (/root/server/node_modules/express/lib/router/layer.js:95:5) at trim_prefix (/root/server/node_modules/express/lib/router/index.js:317:13) at /root/server/node_modules/express/lib/router/index.js:284:7 at Function.process_params (/root/server/node_modules/express/lib/router/index.js:335:12) at next (/root/server/node_modules/express/lib/router/index.js:275:10) at jsonParser (/root/server/node_modules/body-parser/lib/types/json.js:118:7)
the code is following
const express = require("express"); const bodyParser = require('body-parser'); function setEntity(req, res) { // something.... } module.exports = (app) => { const router = new express.Router(); app.use(bodyParser.json({limit:'50mb'})); app.use(bodyParser.urlencoded({ extended: true })); router.use('/set/', (req, res) => { setEntity(req, res); }); return router; };
It seems similar to this question
So I tried these 3 solutions.
1.
app.use(bodyParser.json({limit: '50mb'})); app.use(bodyParser.urlencoded({limit: '50mb', extended: true}));
2.
app.use(bodyParser.json({limit: "50mb"})); app.use(bodyParser.urlencoded({limit: "50mb", extended: true, parameterLimit:50000}));
3.
app.use(bodyParser.json({limit:1024*1024*20, type:'application/json'})); app.use(bodyParser.urlencoded({extended:true,limit:1024*1024*20,type:'application/x-www-form-urlencoding' }));
but the result didn't change.
another setting is like below
nginx has this setting : client_max_body_size 200M; data size is under 500kb (json). express : 4.15.3 body-parser : 1.18.2
I have no idea why I can't change limit data size.
The HTTP 413 Payload Too Large response status code indicates that the request entity is larger than limits defined by server; the server might close the connection or return a Retry-After header field.
In express, we use the body-parser middleware to parse the data from the incoming requests, and also it sets the default request body size to 100kb so when a request body size exceeds 100kb we will see this error. To fix this error, we need to increase the body-parser size limit like this. app. use(express.
What does “413 Request Entity Too Large” mean? A 413 HTTP error code occurs when the size of a client's request exceeds the server's file size limit. This typically happens when a client attempts to upload a large file to a web server, and the server responds with a 413 error to alert the client.
My issue was because I had app.use(express.json())
and also
app.use(bodyParser.json({ limit: "50mb" }))
and
app.use(bodyParser.urlencoded({ limit: "50mb", extended: true, parameterLimit: 50000 }))
I solved it after removing app.use(express.json())
. Hope it helps somebody with the same issue.
Controlling the maximum request body size will do the trick, however, you do not need body-parser anymore. Instead of using body-parser middleware, use the new Express implementation:
app.use(express.json({limit: '50mb'})); app.use(express.urlencoded({limit: '50mb', extended: true, parameterLimit: 50000}));
You can find here the complete documentation.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With