Companion Uppy上传超5GB文件时/complete请求返回413错误求助
解决Companion Uppy大文件上传/complete请求413错误的方案
问题核心
上传大于5GB的文件时,/complete请求返回413(PayloadTooLargeError),但请求负载仅188k,自定义的body-parser limit配置未生效。
可能原因及解决步骤
1. Companion自身未应用body-parser限制配置
你自定义的body-parser配置是在自己的Express应用中,但Companion是独立的Express服务,你的配置不会作用到它身上。需要修改Companion内部的body-parser设置:
- 若为源码部署Companion:
找到Companion的Express初始化文件(通常在src/server/express.js或类似路径),替换原有的body-parser注册代码:
重新构建并启动Companion。const bodyParser = require('body-parser'); app.use(bodyParser.json({ limit: '50mb' })); app.use(bodyParser.urlencoded({ limit: '50mb', extended: true })); - 若为全局安装的Companion:
进入Companion安装目录(如你日志中的/usr/local/share/.config/yarn/global/node_modules/@uppy/companion),打开lib/server/express.js,修改body-parser配置添加limit参数,之后重启Companion服务。
2. 反向代理(如Nginx)的请求体大小限制
如果Companion前端有Nginx等反向代理,默认client_max_body_size通常为1MB,会先于Express拦截请求:
- 打开Nginx配置文件(如
/etc/nginx/nginx.conf或站点专属配置),在对应server或location块中添加:client_max_body_size 50m; - 重启Nginx服务:
sudo systemctl restart nginx
3. 验证raw-body的限制传递
错误日志显示问题来自raw-body模块(body-parser的依赖),需确保body-parser的limit参数正确传递给它:
- 检查Companion中body-parser的调用是否遗漏
limit配置,或是否有其他中间件在body-parser之前修改了请求处理逻辑。
4. 确认请求Content-Type
确保/complete请求的Content-Type为application/json,若为其他类型,body-parser.json不会处理,可能触发默认解析限制。可在浏览器开发者工具的Network面板中查看请求头确认。
内容的提问来源于stack exchange,提问作者JasonGenX
相关产品推荐
相关产品推荐

