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

时间:2018-10-08 04:45:37

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

在过去的三天里,我一直在争先恐后地跨网,似乎无所适从。

我们一直在本地使用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

1 个答案:

答案 0 :(得分:0)

我通过增加 Node.jsExpress.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'}));