Nestjs 解决 request entity too large

背景

修改一个富文本的时候,

排查思路

报错是: "request entity too large"

  • 搜索后端文案 - 没找到

  • 请求体有关

    • nginx 设置了请求体大小拦截抛错,比如 client_max_body_size ?
    • 框架的请求体解析包限制量数值较低

排查nginx 设置的拦截抛错

  • 直接查看线上 nginx 的配置 - 无 client_max_body_size 配置
  • 把 curl 后更改部分参数放到 apifox 直接请求 本地 的 node 服务时,仍然报错,跳过 nginx 限制拦截抛错的问题,

排查框架的请求体解析包限制量数值较低

报错内容是 "request entity too large" 则和请求体有关,于是从请求体包入手,nestjs 我们用的是 express,请求体解析的包是 body-parser

  1. 查看 ts 类型中的 body-parser
  1. 搜索 limit

得到 Defaults to '100kb' **默认值为 "100kb"

解决方法

  • 增大配置请求体大小限制, 将限制的值放在环境变量(配置文件)中,方便快速更改
ts 复制代码
import { json } from "express";
import { ConfigService } from "@nestjs/config";
import { NestFactory } from "@nestjs/core";


async function bootstrap() {
   ...
  const app = await NestFactory.create(
    AppModule.register(absoluteConfigFilePath)
  );

  // 配置请求体大小限制, 重点在于这行
  app.use(json({ limit: configService.get("MAX_REQ_BODY_SIZE") || "10mb" }));
  ...
}
相关推荐
你的人类朋友1 天前
😎 Node.js 应用多阶段构建 Dockerfile 详解
后端·docker·容器
小坏讲微服务1 天前
Spring Boot整合Redis注解,实战Redis注解使用
spring boot·redis·分布式·后端·spring cloud·微服务·mybatis
橘子海全栈攻城狮1 天前
【源码+文档+调试讲解】基于Spring Boot的考务管理系统设计与实现 085
java·spring boot·后端·spring
追逐时光者1 天前
一个基于 .NET 8 + DDD 搭建的模块化微服务框架
后端·.net
William_cl1 天前
C# ASP.NET MVC 数据验证实战:View 层双保险(Html.ValidationMessageFor + jQuery Validate)
后端·c#·asp.net·mvc
Access开发易登软件1 天前
Access导出带图表的 HTML 报表:技术实现详解
数据库·后端·html·vba·导出·access
Archy_Wang_11 天前
ASP.NET Core 应用的零停机部署策略
后端·servlet·asp.net
菜鸟‍1 天前
【前端学习】阿里前端面试题
前端·javascript·学习
用户47949283569151 天前
告别span嵌套地狱:CSS Highlights API重新定义语法高亮
前端·javascript·css