node.js - Heroku 上的 413(请求实体太大)带有 Node.JS 和 Create-React-App BuildPack

标签 node.js reactjs express heroku create-react-app

在过去的 3 天里,我一直在打乱互联网,似乎绕着圈子跑,没有解决方案。

我们一直在本地构建应用程序,使用 create-react-app 和 Express.js 后端。在本地实例上上传文件(任何类型)没有问题。我们已经部署到 Heroku,使用代理为前端和后端提供单独的 dynos。就目前而言,没有可以找到的 nginx.conf 文件。一切都说我们正在运行 nginx,但没有可编辑的配置文件。尽管如此,当尝试在 Heroku 部署的站点上上传时,无法加载资源:服务器响应状态为 413(请求实体太大)错误在发出 POST 请求时被触发。

我试过添加:

  // 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通过增加 limitjson .您可以引用下面的这段代码以供引用:

app.use(express.json({limit: '50mb'}));
app.use(express.urlencoded({limit: '50mb'}));
对于 express v4.16.0+ 然后你使用 express.json否则你可以使用 bodyparser
app.use(express.bodyParser({limit: '50mb'}));
app.use(express.urlencoded({limit: '50mb'}));

关于node.js - Heroku 上的 413(请求实体太大)带有 Node.JS 和 Create-React-App BuildPack,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52695512/

相关文章:

node.js - 无法加载css文件

node.js - Sequelize 同步 ORM

mysql - 从sequelize查询中排除主键属性

javascript - 等待来自 readline 模块 (Node.Js) 的用户输入

reactjs - 这两种rootSaga配置有什么区别

reactjs - Material -UI React : Global theme override for Paper component

javascript - 在 React 中,我可以在另一个功能组件的主体内定义一个功能组件吗?

node.js - 我怎样才能让 Istanbul 尔与 Node 、 Mocha 、 Jasmine 一起工作并需要 js

javascript - Grunt——在同一端口上运行 Connect 和 Express 服务器

javascript - Node.js 中的端点与 Express 应用程序之间的冲突