Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

PayloadTooLargeError: request entity too large

Tags:

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.

like image 762
ya90net Avatar asked May 12 '18 09:05

ya90net


People also ask

How do you handle 413 payload too large?

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.

How do I fix request entity too large in react JS?

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 error Request Entity Too Large mean?

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.


2 Answers

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.

like image 172
Nicolas Forero Avatar answered Sep 21 '22 03:09

Nicolas Forero


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.

like image 27
Paulo Guimarães Avatar answered Sep 21 '22 03:09

Paulo Guimarães