Maison  >  Article  >  interface Web  >  Comment corriger l'« Erreur : entité de demande trop grande » dans Express.js ?

Comment corriger l'« Erreur : entité de demande trop grande » dans Express.js ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-27 15:09:11413parcourir

How to Fix the

Dépannage « Erreur : entité de demande trop grande » dans Express

Les utilisateurs d'Express peuvent rencontrer l'erreur « Erreur : entité de demande trop grande » lors de la gestion de charges utiles volumineuses. Ce problème survient lorsque la requête entrante dépasse la limite de taille configurée.

Définition de la limite de taille de la requête

Pour résoudre ce problème, les utilisateurs peuvent ajuster la limite de taille de la requête à l'aide de l'app.use(express. limite(taille)) middleware. Dans l'exemple fourni, la limite est fixée à 100 000 000 octets.

Vérification de l'en-tête Content-Length

Assurez-vous que l'en-tête Content-Length dans Fiddler correspond à la taille du tableau JSON publié. Dans ce cas, l'en-tête affiche une valeur de 1078702 octets, ce qui équivaut à 1,0787 mégaoctets.

Solution potentielle

Une solution possible consiste à utiliser app.use(express.bodyParser({limit : '50mb'})) au lieu de app.use(express.limit(size)). Il a été signalé que cette approche fonctionne pour certains utilisateurs.

Patch temporaire

Si les solutions ci-dessus échouent, un correctif temporaire peut être appliqué en modifiant directement le module raw-body. En ajoutant la limite = 52428800 ; à la ligne 10 de node_modules/express/node_modules/raw-body/index.js, la limite sera forcée à 50 mégaoctets. Notez qu'il s'agit d'une solution de contournement temporaire et non d'une solution permanente.

Solution recommandée

Pour une solution plus robuste, il est recommandé d'utiliser le module body-parser avec Express 4 ou version ultérieure. L'extrait de code suivant illustre comment configurer la limite de taille du corps :

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

Remarques supplémentaires :

  • Évitez d'utiliser bodyParser() car il est obsolète.
  • Utilisez l'option d'extension pour urlencoded() dans Express 3.x.
  • Dans Express 4.16.0 et versions ultérieures, la méthode précédente de définition de la limite (app.use(express.json({limit: '50mb'}))) est à nouveau prise en charge.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn