> 웹 프론트엔드 > JS 튜토리얼 > Express에서 \'요청 엔터티가 너무 큼\' 오류가 발생하는 이유는 무엇이며 어떻게 해결할 수 있습니까?

Express에서 \'요청 엔터티가 너무 큼\' 오류가 발생하는 이유는 무엇이며 어떻게 해결할 수 있습니까?

Patricia Arquette
풀어 주다: 2024-12-02 03:59:10
원래의
752명이 탐색했습니다.

Why am I getting the

Express의 "오류: 요청 엔터티가 너무 큼"

요청이 사전 정의된 값을 초과하면 Express에서 "요청 엔터티가 너무 큼" 오류가 발생합니다. 파일 크기 제한. 이 오류는 개발자들이 머리를 긁적거리게 만들 정도로 혼란스러울 수 있습니다. 문제를 자세히 살펴보고 해결책을 찾아보겠습니다.

1. 요청 크기 제한 설정

Express는 요청 본문의 최대 크기에 대한 제한을 설정하는 기능을 제공합니다. 코드에서 다음을 정의했습니다.

app.use(express.limit(100000000));
로그인 후 복사

이 줄은 제한을 100MB로 설정합니다. Fiddler에서 요청 헤더를 검사한 결과, 콘텐츠 길이가 1.0787MB로 규정된 제한 내에 있는 것으로 나타났습니다.

2. 한도 재설정

한도를 설정했음에도 불구하고 Express는 이를 준수하지 않을 수 있습니다. 모듈은 여러 레이어로 구성되어 있으며, 특정한 경우 도중에 한도가 재설정될 수 있습니다. 이로 인해 명시적으로 제한을 정의한 후에도 오류가 지속될 수 있습니다.

3. 모듈 패치(권장하지 않음)

일부 사용자는 임시 해결 방법으로 모듈을 직접 패치하여 성공했다고 보고했습니다. 그러나 이는 이상적인 솔루션이 아니므로 주의해서 접근해야 한다는 점을 기억하는 것이 중요합니다. 이 경로를 이용하기로 결정하셨다면 본인의 판단에 따라 진행하세요.

4. Body-Parser 사용(Express 4 및 Node.js 10.12만 해당)

Express 4 이상에서는 요청 본문을 처리하기 위해 express.bodyParser() 대신 body-parser 미들웨어를 사용해야 합니다. 다음과 같이 파서를 명시적으로 선언하세요.

app.use(body-parser.json({limit: '50mb'}));
app.use(body-parser.urlencoded({limit: '50mb', extended: true}));
로그인 후 복사

bodyParser.urlencoded()에 확장 옵션이 지정되지 않으면 경고가 발생합니다.

5. bodyParser를 맨 위로 이동(Express 4에만 해당)

Express 4에서는 app.use(bodyParser(...))를 app.use(express.json()) 또는 앞에 배치해야 합니다. app.use(express.urlencoded())를 사용하여 재정의를 방지하세요.

6. 이전 방식으로 돌아가기(Express 4.16.0만 해당)

Express v4.16.0 이상에서는 요청 본문을 처리하는 원래 방식으로 되돌릴 수 있습니다.

app.use(express.json({limit: '50mb'}));
app.use(express.urlencoded({limit: '50mb'}));
로그인 후 복사

이러한 조치를 사용하면 Express에서 "요청 엔터티가 너무 큼" 오류를 효과적으로 해결할 수 있습니다. 원활한 작동을 위해서는 Express 버전과 환경에 가장 적합한 방법을 사용하시기 바랍니다.

위 내용은 Express에서 \'요청 엔터티가 너무 큼\' 오류가 발생하는 이유는 무엇이며 어떻게 해결할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿