Next.js服务器报Body exceeded 1 MB limit错误,配置修改无效求助
解决Next.js Server Action请求体超过1MB限制的问题
你遇到的Body exceeded 1 MB limit错误,核心原因是你用的是Next.js的Server Action(带"use server"标识),而之前写的export const config是Pages Router中API路由的配置方式,对Server Action完全不生效。
下面给你两种可行的解决方法:
方法一:全局修改Server Action的请求体大小限制(推荐)
在next.config.js中添加针对Server Action的专属配置,设置你需要的大小上限:
/** @type {import('next').NextConfig} */ const nextConfig = { experimental: { serverActions: { bodySizeLimit: '10mb', // 可根据需求调整,比如'20mb' }, }, // 如果同时使用Pages Router的API路由,可保留此配置兼容 api: { bodyParser: { sizeLimit: '10mb', }, }, } module.exports = nextConfig
修改完成后必须重启Next.js开发服务器,新配置才会生效。
方法二:手动解析请求体(适合单个Action调整)
如果不想全局调整所有Server Action的限制,也可以在目标Action中手动处理请求体,绕过默认的大小校验:
"use server" import { connectToDatabase } from "@/mongodb/connectToMongo"; // 参数改为Request对象,手动处理请求体 export default async (request) => { const document = await request.json(); const db = await connectToDatabase(); const collection = db.collection("excels"); const response = await collection.insertOne(document); return response.insertedId; }
调用这个Action时,需要用fetch直接请求该文件对应的路由(比如文件在app/actions/saveExcel.js,就请求/app/actions/saveExcel),而不要用Next.js的自动Action调用语法。
内容的提问来源于stack exchange,提问作者ajay shahnew
相关产品推荐
相关产品推荐

