node.js - Heroku 上带有 Node.JS 和 Create-React-App BuildPack 的 413(请求实体太大)
问题描述
在过去的 3 天里,我一直在扰乱互联网,似乎在没有解决方案的情况下转圈。
我们一直在本地构建应用程序,使用 create-react-app 和 Express.js 后端。在本地实例上上传文件(任何类型)都没有问题。我们已经部署到 Heroku,使用代理为前端和后端提供单独的测功机。就目前而言,没有可以找到的 nginx.conf 文件。一切都说我们正在运行 nginx,但没有可编辑的配置文件。尽管如此,当尝试在 Heroku 部署的站点上上传时,在发出 POST 请求时触发了加载资源失败:服务器响应状态为 413(请求实体太大)错误。
我试过添加:
// Body Parser Middleware
app.use(bodyParser.json({ limit: "500mb" }));
app.use(
bodyParser.urlencoded({
limit: "500mb",
extended: true,
parameterLimit: 5000000
})
);
我们使用 Multer 进行分段上传,这就是我们关心的问题(上传文件,特别是音频文件)
如下:
const maxSize = 50 * 1024 * 1024; //30 MB
/*
Profile Upload
*/
const upload = multer({
storage: storage,
limits: { fileSize: maxSize, fieldSize: maxSize }
});
此外,在前端 React.js 端的 static.json 中,添加了以下内容:
{
"max_body_size": "50m",
}
Stackoverflow 和 Github 上建议的每个解决方案都已尝试过。我们在这里遗漏了什么吗?为自己模拟错误: https : //www.trakz.co/upload,电子邮件为 tester@gmail.com,密码为 testpass
解决方案
我通过增加. Node.js
_ 您可以参考下面的这段代码供您参考:Express.js
limit
json
app.use(express.json({limit: '50mb'}));
app.use(express.urlencoded({limit: '50mb'}));
对于Express v4.16.0+然后你可以使用express.json
else 你可以使用bodyparser
app.use(express.bodyParser({limit: '50mb'}));
app.use(express.urlencoded({limit: '50mb'}));
推荐阅读
- html - flexbox 中段落字体大小的意外行为
- c# - 无法锻炼如何创建要反序列化的类
- java - 如果关闭并打开 GPS,位置返回 null
- express - How to limit the number of calls in Express.js?
- linux - 如何在 hadoop 工作机器之间同步配置
- package.json - 如何将文本作为 npm 脚本命令添加到文件中
- azure - Azure AKS - 我禁用了 addon-http-application-routing 但 pod、部署、服务和其他东西都在集群中
- jestjs - 为什么错误字符串中有一些正斜杠?
- linux - Google Chrome 中的 ERR_INVALID_SIGNED_EXCHANGE 错误
- sql - 如何在两个月之间按天分配收入