web-dev-qa-db-fra.com

Nest.js - entité de demande trop grande PayloadTooLargeError: entité de demande trop grande

J'essaie d'enregistrer un JSON sur un serveur Nest.js mais le serveur plante lorsque j'essaye de le faire, et c'est le problème que je vois sur le console.log:

[Nest] 1976 - 2018-10-12 09:52:04 [ExceptionsHandler] request entity too large PayloadTooLargeError: request entity too large

Une chose est que la taille de la demande JSON est de 1095922 octets. Est-ce que quelqu'un sait comment dans Nest.js augmenter la taille d'une demande valide? Merci!

7
Alexisvt

J'ai trouvé la solution, car ce problème est lié à express (Nest.js utilise express derrière la scène) J'ai trouvé une solution dans ce fil Erreur: entité de requête trop grande , ce que j'ai fait, c'est de modifier le fichier main.ts, D'ajouter la dépendance body-parse Et d'ajouter une nouvelle configuration pour augmenter la taille de la demande JSON, puis j'utilise le app instance disponible dans le fichier pour appliquer ces modifications.

import { NestFactory } from '@nestjs/core';
import * as bodyParser from 'body-parser';

import { AppModule } from './app.module';

async function bootstrap() {
  const app = await NestFactory.create(AppModule);
  app.useStaticAssets(`${__dirname}/public`);
  // the next two lines did the trick
  app.use(bodyParser.json({limit: '50mb'}));
  app.use(bodyParser.urlencoded({limit: '50mb', extended: true}));
  app.enableCors();
  await app.listen(3001);
}
bootstrap();
13
Alexisvt

La solution qui a résolu pour moi était d'augmenter bodyLimit. Source: https://www.fastify.io/docs/latest/Server/#bodylimit

const app = await NestFactory.create<NestFastifyApplication>(
AppModule,
new FastifyAdapter({ bodyLimit: 10048576 }),
2
Brenner Batista

vous pouvez également importer urlencoded & json depuis express

import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
import { urlencoded, json } from 'express';

async function bootstrap() {
  const app = await NestFactory.create(AppModule);
  app.setGlobalPrefix('api');
  app.use(json({ limit: '50mb' }));
  app.use(urlencoded({ extended: true, limit: '50mb' }));
  await app.listen(process.env.PORT || 3000);
}
bootstrap();
2
shahidfoy

La limite par défaut définie par body-parser est de 100 Ko: https://github.com/expressjs/body-parser/blob/0632e2f378d53579b6b2e4402258f4406e62ac6f/lib/types/json.js#L53-L55

J'espère que cela t'aides :)

Pour moi, cela a aidé et j'ai mis 100 Ko à 50 Mo

0
saddam