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

无法配置Vercel接收超100MB请求负载的问题排查

Vercel API Routes 大请求体负载配置解决方案

你遇到的问题核心是Vercel平台对常规API Routes的请求体有硬限制,同时默认body parser的额外限制也会导致配置不生效,以下是具体分析和可行方案:

问题原因

  • 常规API Routes的平台硬上限是100MB,即便你配置sizeLimit: '200mb',超过100MB的请求依然会触发413错误。
  • ES模块格式的export const config未生效,大概率是文件格式不匹配(比如.js文件未在package.json中声明"type": "module"),导致Vercel未识别配置,沿用了默认的4MB body parser限制。

可行解决方案

方案1:处理100MB以内的请求

关闭默认body parser,手动处理请求流,绕过中间层限制,同时确保配置格式正确:

  • 如果用CommonJS格式(.js文件,无"type": "module"):
module.exports = {
  api: {
    bodyParser: false, // 关闭默认解析,手动处理请求体
  },
};

export default async function handler(req, res) {
  if (req.method !== 'POST') {
    return res.status(405).end();
  }

  // 手动收集请求流数据
  const chunks = [];
  for await (const chunk of req) {
    chunks.push(chunk);
  }
  const requestBuffer = Buffer.concat(chunks);
  
  // 这里添加你的业务逻辑,比如将buffer上传至存储服务等
  res.status(200).json({ success: true, payloadSize: requestBuffer.length });
}
  • 如果用ES模块格式(.mjs文件或package.json中设"type": "module"):
export const config = {
  api: {
    bodyParser: false,
  },
};

export default async function handler(req, res) {
  if (req.method !== 'POST') {
    return res.status(405).end();
  }

  const chunks = [];
  for await (const chunk of req) {
    chunks.push(chunk);
  }
  const requestBuffer = Buffer.concat(chunks);
  
  res.status(200).json({ success: true, payloadSize: requestBuffer.length });
}

方案2:处理超过100MB的请求

常规API Routes无法突破100MB的平台硬限制,需改用以下两种方案:

  1. 使用Vercel Edge Functions:
    Edge Functions的请求体上限为256MB,需启用Edge Runtime,注意使用Web标准API而非Node.js特定API:
export const config = {
  runtime: 'edge', // 启用Edge Runtime
};

export default async function handler(req) {
  if (req.method !== 'POST') {
    return new Response('Method Not Allowed', { status: 405 });
  }

  const requestData = await req.arrayBuffer();
  // 处理数据逻辑

  return new Response(JSON.stringify({ success: true, payloadSize: requestData.byteLength }), {
    headers: { 'Content-Type': 'application/json' },
  });
}
  1. 客户端直传云存储:
    让客户端直接将大文件上传至AWS S3、Cloudflare R2等云存储服务,上传完成后仅向Vercel API发送文件地址,由API后续处理文件,彻底绕过请求体大小限制。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 14:55:01