티스토리 뷰

node.js로 오랜만에 서버 작업을 하다가 이런 에러를 만나게 되었습니다!!

 

413 PayloadTooLargeError: request entity too large 

 

body에 너무 큰 데이터를 넣은 것!

(상단의 이미지는 Postman으로 api를 쐈을 때 나온 결과입니다.)

 

열심히 구글링을 해보았습니다.

 

 

1번 (이 방법으로 해결 X)

맨 처음에는 서버설정을 수정해야 한다는 레퍼런스를 찾았습니다!!

(참고로, 제 서버는 nginx로 구동되고 있습니다.)

$ vi /etc/nginx/nginx.conf

nginx.conf 설정파일 안에 아래 max body size를 100MB로 설정해주는 코드를 넣어줍니다.

#nginx.conf
http {
  # Set client upload size - 100Mbyte
  client_max_body_size 100M;
  ...
  ..
  .
}

이 설정을 마친 뒤 똑같은 api를 쐈지만 여전히 413 PayloadTooLargeError: request entity too large가 발생하였답니다😇

(로컬에서 테스트 해보기 때문에 서버 설정이 아무 소용 없다는 걸 방금 생각난 바보돌,,, 원래 그렇게 바보 아닌데,,,,)

 

출처 : https://velog.io/@wijihoon123/Nginx-413-request-entity-too-large

 

2번 (이 방법으로 해결 O)

더 열심히 찾다보니 node.js 서버 코드 자체를 수정해주는 레퍼런스를 찾았습니다!!

(api 서버의 언어로 node.js를 사용하고 있습니다.)

 

express를 사용하고 있는데 

기본값으로는 .json().urlencoded()100kb 까지만 파싱할 수 있도록 설정되어 있습니다!

 

그래서 express.js파일에 이 코드로 새로 적용해주었습니다!!

 

기존 코드 :

app.use(express.json());
app.use(express.urlencoded({extended: true}));

변경한 코드 :

app.use(express.json({ limit : "100mb" }));
app.use(express.urlencoded({ limit:"100mb", extended: false }));

 

더보기

전체코드 : 

const express = require('express');
const compression = require('compression');
const methodOverride = require('method-override');
module.exports = function () {
    const app = express();

    app.use(compression());

    app.use(express.json({ limit : "100mb" }));

    app.use(express.urlencoded({ limit:"100mb", extended: false }));

    app.use(methodOverride());

    return app;
};


출처: https://spiralmoon.tistory.com/entry/Nodejs-PayloadTooLargeError-request-entity-too-large [Spiral Moon's programming blog]

 

 

이렇게 적용하니 아주 잘 돌아갑니다!!!👍👍

출처의 블로그 작성자님들 감사합니다!🙇‍♀️

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
글 보관함