프레임워크/NestJS

[NestJs] PayloadTooLargeError: request entity too large 해결하기

트리맨스 2021. 10. 27. 00:07
반응형

 

최근에 대량의 Mutation을 실행하기 위해서 서버에 요청을 보낸 적이 있었다. 그런데 PayloadTooLargeError: request entity too large 라는 에러가 뜨면서 Mutation 요청에 실패하는 일이 발생했다. 찾아보니 express 기반의 서버에서 발생하는 오류 같은데, 요청이 특정 크기를 넘어가게 되면은 막아버리는 것 같았다. 그래서 해결법을 찾아보니 express의 버전에 따라서 약간의 차이는 있으나, 해결법은 비슷해 보였다.

 

해결법


나는 아래와 같은 방법으로 해결했다. bodyParser 모듈을 설치한 다음 limit를 풀어 주었다. 아래 코드들은 main.ts 파일이다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
import { resolve, join } from 'path';
import * as express from 'express';
import { urlencoded, json } from 'body-parser';
 
async function bootstrap() {
  const app = await NestFactory.create(AppModule);
  app.use(express.static(join(process.cwd(), '../client/dist/')));
  app.use(json({ limit: '50mb' }));
  app.use(urlencoded({ limit: '50mb', extended: true }));
  app.enableCors();
  await app.listen(3000);
}
bootstrap();
 
cs

 

express 버전에 따라서 동작이 안될 경우도 있다. 그럴 경우에는 다음과 같은 코드를 사용해보자.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
import { resolve, join } from 'path';
import * as express from 'express';
 
async function bootstrap() {
  const app = await NestFactory.create(AppModule);
  app.use(express.static(join(process.cwd(), '../client/dist/')));
  app.use(express.json({ limit: '50mb' }));
  app.use(express.urlencoded({ limit: '50mb', extended: true }));
  app.enableCors();
  await app.listen(3000);
}
bootstrap();
 
cs

 

가끔씩 관리자 모드에서 대량의 쿼리가 필요할 때 이러한 식으로 처리하면 대부분의 한계 용량은 커버 가능할 듯 하다.

 

반응형