Hola, tengo un problema con Express.js, necesito enviar un archivo base64 a node.js, mi configuración es la que se ve a continuación, pero cuando envío el archivo, aparece este error: PayloadTooLargeError: ¡entidad de solicitud demasiado grande! He leído que es necesario establecer el límite en los analizadores de cuerpo como lo hice a continuación, el hecho es que me sigue pasando, ¿cómo puedo resolver esto?
Código de nodo:
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;En su código, ha llamado dos veces a bodyParser.json() y bodyParser.urlencoded() , el problema es que el que tiene limit está después de las llamadas sin opciones, que por defecto es 100kb . Entonces, cuando publique algo mayor a 100kb , se generará ese error, ya que el primer analizador no irá al siguiente middleware.
No debe llamar a bodyParser[method] dos veces.
Remover:
app.use(myParser.json()); app.use(myParser.urlencoded({ extended: true }));Y vete:
app.use(myParser.json({limit: '200mb'})); app.use(myParser.urlencoded({limit: '200mb', extended: true})); Dependiendo de cómo esté publicando la cadena base64 , es posible que desee usar:
app.use(myParser.text({ limit: '200mb' }));