una por pides persona pedir mensaje las hacen favor ejemplos dinero dificil cuando cosas como arte aprender amablemente javascript node.js http express

javascript - por - Error: petición entidad demasiado grande



cuando pides un favor y no te lo hacen (12)

Estoy recibiendo el siguiente error con Express:

Error: request entity too large at module.exports (/Users/michaeljames/Documents/Projects/Proj/mean/node_modules/express/node_modules/connect/node_modules/raw-body/index.js:16:15) at json (/Users/michaeljames/Documents/Projects/Proj/mean/node_modules/express/node_modules/connect/lib/middleware/json.js:60:5) at Object.bodyParser [as handle] (/Users/michaeljames/Documents/Projects/Proj/mean/node_modules/express/node_modules/connect/lib/middleware/bodyParser.js:53:5) at next (/Users/michaeljames/Documents/Projects/Proj/mean/node_modules/express/node_modules/connect/lib/proto.js:193:15) at Object.cookieParser [as handle] (/Users/michaeljames/Documents/Projects/Proj/mean/node_modules/express/node_modules/connect/lib/middleware/cookieParser.js:60:5) at next (/Users/michaeljames/Documents/Projects/Proj/mean/node_modules/express/node_modules/connect/lib/proto.js:193:15) at Object.logger (/Users/michaeljames/Documents/Projects/Proj/mean/node_modules/express/node_modules/connect/lib/middleware/logger.js:158:5) at next (/Users/michaeljames/Documents/Projects/Proj/mean/node_modules/express/node_modules/connect/lib/proto.js:193:15) at Object.staticMiddleware [as handle] (/Users/michaeljames/Documents/Projects/Proj/mean/node_modules/express/node_modules/connect/lib/middleware/static.js:55:61) at next (/Users/michaeljames/Documents/Projects/Proj/mean/node_modules/express/node_modules/connect/lib/proto.js:193:15) TypeError: /Users/michaeljames/Documents/Projects/Proj/mean/app/views/includes/foot.jade:31 29| script(type="text/javascript", src="/js/socketio/connect.js") 30| > 31| if (req.host=''localhost'') 32| //Livereload script rendered 33| script(type=''text/javascript'', src=''http://localhost:35729/livereload.js'') 34| Cannot set property ''host'' of undefined at eval (eval at <anonymous> (/Users/michaeljames/Documents/Projects/Proj/mean/node_modules/jade/lib/jade.js:152:8), <anonymous>:273:15) at /Users/michaeljames/Documents/Projects/Proj/mean/node_modules/jade/lib/jade.js:153:35 at Object.exports.render (/Users/michaeljames/Documents/Projects/Proj/mean/node_modules/jade/lib/jade.js:197:10) at Object.exports.renderFile (/Users/michaeljames/Documents/Projects/Proj/mean/node_modules/jade/lib/jade.js:233:18) at View.exports.renderFile [as engine] (/Users/michaeljames/Documents/Projects/Proj/mean/node_modules/jade/lib/jade.js:218:21) at View.render (/Users/michaeljames/Documents/Projects/Proj/mean/node_modules/express/lib/view.js:76:8) at Function.app.render (/Users/michaeljames/Documents/Projects/Proj/mean/node_modules/express/lib/application.js:504:10) at ServerResponse.res.render (/Users/michaeljames/Documents/Projects/Proj/mean/node_modules/express/lib/response.js:801:7) at Object.handle (/Users/michaeljames/Documents/Projects/Proj/mean/config/express.js:82:29) at next (/Users/michaeljames/Documents/Projects/Proj/mean/node_modules/express/node_modules/connect/lib/proto.js:188:17) POST /api/0.1/people 500 618ms

Estoy usando meanstack. Tengo las siguientes declaraciones de uso en mi express.js

//Set Request Size Limit app.use(express.limit(100000000));

Dentro del fiddler puedo ver el encabezado de la longitud del contenido con un valor de: 1078702

Creo que esto está en octetos, esto es 1.0787 megabytes.

No tengo idea de por qué Express no me permite publicar la matriz json que estaba publicando anteriormente en otro proyecto Express que no estaba usando la estructura de proyecto de pila media.


Un enfoque ligeramente diferente: la carga útil es demasiado GRANDE

Todas las respuestas útiles hasta ahora tratan sobre el aumento del límite de carga útil. Pero también podría darse el caso de que la carga útil sea de hecho demasiado grande, pero sin una buena razón. Si no hay una razón válida para ello, considere analizar por qué está tan hinchado en primer lugar.

Nuestra propia experiencia

Por ejemplo, en nuestro caso, una aplicación Angular enviaba con avidez un objeto completo en la carga útil. Cuando se eliminó una propiedad hinchada y redundante, el tamaño de la carga útil se redujo en un factor de 100 . Esto mejoró significativamente el rendimiento y resolvió el error 413.


2016, ninguno de los anteriores funcionó para mí hasta que establecí explícitamente el "tipo" además del "límite" para el modelo de bodyparser:

var app = express(); var jsonParser = bodyParser.json({limit:1024*1024*20, type:''application/json''}); var urlencodedParser = bodyParser.urlencoded({ extended:true,limit:1024*1024*20,type:''application/x-www-form-urlencoding'' }) app.use(jsonParser); app.use(urlencodedParser);


Después de tantos intentos conseguí mi solución

He comentado esta línea app.use (bodyParser.json ());

y puse app.use (bodyParser.json ({limit: ''50mb''}))

Que funciona


En mi caso el problema estaba en la configuración de Nginx . Para resolverlo, tengo que editar el archivo: /etc/nginx/nginx.conf y agregar esta línea dentro del bloque del servidor:

client_max_body_size 5M;

Reinicie Nginx y los problemas se han ido.

sudo systemctl restart nginx


He utilizado otra práctica para este problema con multer dependancie.

Ejemplo:

multer = require(''multer''); var uploading = multer({ limits: {fileSize: 1000000, files:1}, }); exports.uploadpictureone = function(req, res) { cloudinary.uploader.upload(req.body.url, function(result) { res.send(result); }); }; module.exports = function(app) { app.route(''/api/upload'', uploading).all(uploadPolicy.isAllowed) .post(upload.uploadpictureone); };


Lo siguiente funcionó para mí ... Sólo uso

app.use(bodyParser({limit: ''50mb''}));

Eso es.

Probé todo lo anterior y ninguno funcionó. Encontrado que aunque usamos como lo siguiente,

app.use(bodyParser()); app.use(bodyParser({limit: ''50mb''})); app.use(bodyParser.urlencoded({limit: ''50mb''}));

solo la primera app.use(bodyParser()); uno se define y las dos últimas líneas fueron ignoradas.

Consulte: https://github.com/expressjs/body-parser/issues/176 >> vea ''dougwilson comentó el 17 de junio de 2016''


No creo que este sea el límite de tamaño global expreso, sino específicamente el límite de middleware connect.json . Esto es 100kb de forma predeterminada cuando usa express.bodyParser() y no proporciona una opción de limit .

Tratar:

app.post(''/api/0.1/people'', express.bodyParser({limit: ''5mb''}), yourHandler);


Poco viejo post pero tuve el mismo problema

El uso de Express 4. + mi código se ve así y funciona muy bien después de dos días de pruebas exhaustivas.

var url = require(''url''), homePath = __dirname + ''/../'', apiV1 = require(homePath + ''api/v1/start''), bodyParser = require(''body-parser'').json({limit:''100mb''}); module.exports = function(app){ app.get(''/'', function (req, res) { res.render( homePath + ''public/template/index''); }); app.get(''/api/v1/'', function (req, res) { var query = url.parse(req.url).query; if ( !query ) { res.redirect(''/''); } apiV1( ''GET'', query, function (response) { res.json(response); }); }); app.get(''*'', function (req,res) { res.redirect(''/''); }); app.post(''/api/v1/'', bodyParser, function (req, res) { if ( !req.body ) { res.json({ status: ''error'', response: ''No data to parse'' }); } apiV1( ''POST'', req.body, function (response) { res.json(response); }); }); };


Recientemente tuve el mismo error y todas las soluciones que encontré no funcionaron.

Después de algunas excavaciones, encontré esa configuración app.use(express.bodyParser({limit: ''50mb''})); estableció el límite correctamente.

Al agregar un console.log(''Limit file size: ''+limit); en node_modules/express/node_modules/connect/lib/middleware/json.js:46 y reiniciando el nodo, obtengo esta salida en la consola:

Limit file size: 1048576 connect.multipart() will be removed in connect 3.0 visit https://github.com/senchalabs/connect/wiki/Connect-3.0 for alternatives connect.limit() will be removed in connect 3.0 Limit file size: 52428800 Express server listening on port 3002

Podemos ver que al principio, cuando se carga el módulo de connect , el límite se establece en 1 mb (1048576 bytes). Luego, cuando establezco el límite, se vuelve a llamar a console.log y esta vez el límite es 52428800 (50 mb). Sin embargo, todavía tengo una 413 Request entity too large .

Luego agregué console.log(''Limit file size: ''+limit); en node_modules/express/node_modules/connect/node_modules/raw-body/index.js:10 y vio otra línea en la consola al llamar a la ruta con una solicitud grande (antes de la salida de error):

Limit file size: 1048576

Esto significa que de alguna manera, en algún lugar, connect restablece el parámetro de límite e ignora lo que especificamos. Intenté especificar los parámetros de bodyParser en la definición de ruta individualmente, pero tampoco bodyParser suerte.

Si bien no encontré ninguna forma adecuada de configurarlo de forma permanente, puede " parchearlo " directamente en el módulo. Si está utilizando Express 3.4.4, agregue esto en la línea 46 de node_modules/express/node_modules/connect/lib/middleware/json.js :

limit = 52428800; // for 50mb, this corresponds to the size in bytes

El número de línea puede diferir si no ejecuta la misma versión de Express. Tenga en cuenta que esto es una mala práctica y se sobrescribirá si actualiza su módulo.

Por lo tanto, esta solución temporal funciona por ahora, pero tan pronto como se encuentre una solución (o se arregle el módulo, en caso de que sea un problema del módulo), debe actualizar su código en consecuencia.

He abierto un problema en su Github sobre este problema.

[editar - encontró la solución]

Después de algunas investigaciones y pruebas, encontré que al realizar la depuración, agregué app.use(express.bodyParser({limit: ''50mb''})); , pero después de app.use(express.json()); . Express luego establecería el límite global en 1 mb porque el primer analizador que encontró al ejecutar el script fue express.json() . Mover bodyParser encima hizo el truco.

Dicho esto, el método bodyParser() quedará en desuso en Connect 3.0 y no debería usarse. En su lugar, debe declarar sus analizadores explícitamente, así:

app.use(express.json({limit: ''50mb''})); app.use(express.urlencoded({limit: ''50mb''}));

En caso de que necesite multiparte (para subir archivos) vea esta publicación .

Segunda edición

Tenga en cuenta que en Express 4, en lugar de express.json() y express.urlencoded() , debe requerir el módulo body-parser y usar sus métodos json() y urlencoded() , así:

var bodyParser = require(''body-parser''); app.use(bodyParser.json({limit: ''50mb''})); app.use(bodyParser.urlencoded({limit: ''50mb'', extended: true}));

Si la opción extended no está definida explícitamente para bodyParser.urlencoded() , emitirá una advertencia ( body-parser deprecated undefined extended: provide extended option ). Esto se debe a que esta opción será necesaria en la próxima versión y ya no será opcional. Para obtener más información sobre la opción extended , consulte el readme de body-parser .


Si alguien probó todas las respuestas, pero aún no tuvo éxito y utiliza NGINX para hospedar el sitio, agregue esta línea a / etc / nginx / sites-available

client_max_body_size 100M; #100mb


Yo uso Express 4.

En mi caso no fue suficiente agregar estas líneas:

var bodyParser = require(''body-parser''); app.use(bodyParser.json({limit: ''50mb''})); app.use(bodyParser.urlencoded({limit: ''50mb'', extended: true}));

Intenté agregar la opción parametersLimit en la función urlencoded como dice la documentación y ya no aparece el error.

La opción parametersLimit controla el número máximo de parámetros permitidos en los datos codificados en URL. Si una solicitud contiene más parámetros que este valor, se devolverá un 413 al cliente. El valor predeterminado es 1000.

Intenta con este código:

var bodyParser = require(''body-parser''); app.use(bodyParser.json({limit: "50mb"})); app.use(bodyParser.urlencoded({limit: "50mb", extended: true, parameterLimit:50000}));


en mi caso ... configurando el parameterLimit:50000 solucionó el problema

app.use( bodyParser.json({limit: ''50mb''}) ); app.use(bodyParser.urlencoded({ limit: ''50mb'', extended: true, parameterLimit:50000 }));