【问题标题】:413 (Request Entity Too Large) on Heroku w/ Node.JS and Create-React-App BuildPackHeroku 上带有 Node.JS 和 Create-React-App BuildPack 的 413(请求实体太大)
【发布时间】:2019-03-12 17:25:19
【问题描述】:

在过去的 3 天里,我一直在扰乱互联网,似乎在兜圈子,没有解决办法。

我们一直在本地构建应用程序,使用 create-react-app 和 Express.js 后端。在本地实例上上传文件(任何类型)都没有问题。我们已经部署到 Heroku,使用代理为前端和后端提供单独的测功机。就目前而言,没有可以找到的 nginx.conf 文件。一切都说我们正在运行 nginx,但没有可编辑的配置文件。尽管如此,当尝试在 Heroku 部署的站点上上传时,在发出 POST 请求时会触发 Failed to load resource: the server respond with a status of 413 (Request Entity Too Large) 错误。

我已经尝试添加:

  // 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 reactjs express heroku create-react-app


    【解决方案1】:

    我通过增加jsonlimit 解决了用Node.jsExpress.js 编写的后端问题。大家可以参考下面这段sn-p的代码供大家参考:

    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'}));
    

    【讨论】:

      猜你喜欢
      • 2019-09-02
      • 2014-12-30
      • 2014-12-23
      • 1970-01-01
      • 2017-02-16
      • 2015-11-18
      • 2013-08-19
      • 2012-09-23
      相关资源
      最近更新 更多