You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js发送含Base64图片的JSON遇413请求实体过大错误

解决Express请求实体过大(PayloadTooLargeError)问题

问题情况

发送包含Base64编码图片的JSON数据时触发错误,数据示例:

{desc: "hi", img: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABMY" }

报错信息:

PayloadTooLargeError: request entity too large
    at readStream (/Users/mac/Documents/projects/socialmediaclone/backend/node_modules/raw-body/index.js:156:17)

当前Express配置代码

app.use(express.json());
app.use(express.json({ limit: "200mb" }));
app.use(express.urlencoded({ limit: "200mb", extended: true }));
app.use(express.text({ limit: "200mb" }));
app.use(
  cors({
    credentials: true,
    origin: "http://localhost:3000",
  })
);
app.use(cookieParser());

app.use("/api/auth", authRoutes);
app.use("/api/stories", storyRoutes);
app.use("/api/users", userRoutes);
app.use("/api/posts", postRoutes);
app.use("/api/comments", commentRoutes);
app.use("/api/likes", likeRoutes);
app.use("/api/relationships", relationshipRoutes);

问题根源与修复方案

你重复注册了express.json()中间件,第一次调用未添加limit参数,会使用默认的100KB限制,且这个无参数的中间件会优先处理请求,导致后续带200MB限制的配置完全失效。

直接删除无参数的app.use(express.json());,保留带限制配置的版本即可:

// 移除无效配置:app.use(express.json());
app.use(express.json({ limit: "200mb" }));
app.use(express.urlencoded({ limit: "200mb", extended: true }));
app.use(express.text({ limit: "200mb" }));
// 其余配置保持不变

额外提醒:如果你的Base64图片实际大小超过200MB,可以适当调高limit值,比如设置为"500mb"。

内容的提问来源于stack exchange,提问作者etranz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 22:43:00