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" }));
  ...
}
相关推荐
武子康2 小时前
Java-80 深入浅出 RPC Dubbo 动态服务降级:从雪崩防护到配置中心秒级生效
java·分布式·后端·spring·微服务·rpc·dubbo
舒一笑3 小时前
我的开源项目-PandaCoder迎来史诗级大更新啦
后端·程序员·intellij idea
灵感__idea3 小时前
JavaScript高级程序设计(第5版):好的编程就是掌控感
前端·javascript·程序员
@昵称不存在4 小时前
Flask input 和datalist结合
后端·python·flask
zhuyasen4 小时前
Go 分布式任务和定时任务太难?sasynq 让异步任务从未如此简单
后端·go
东林牧之4 小时前
Django+celery异步:拿来即用,可移植性高
后端·python·django
超浪的晨5 小时前
Java UDP 通信详解:从基础到实战,彻底掌握无连接网络编程
java·开发语言·后端·学习·个人开发
AntBlack5 小时前
从小不学好 ,影刀 + ddddocr 实现图片验证码认证自动化
后端·python·计算机视觉
hui函数6 小时前
掌握JavaScript函数封装与作用域
前端·javascript
Pomelo_刘金6 小时前
Clean Architecture 整洁架构:借一只闹钟讲明白「整洁架构」的来龙去脉
后端·架构·rust