背景
修改一个富文本的时候,
排查思路
报错是: "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
- 查看 ts 类型中的 body-parser

- 搜索 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" }));
...
}