6

我到处寻找,似乎无法找到对此的解释,这就是 Heroku 在我的日志中显示的内容:

45:45+00:00 app[web.7]: Error: Request Entity Too Large
45:45+00:00 app[web.7]:     at Object.error (/app/node_modules/express/node_modules/connect/lib/utils.js:44:13)
45:45+00:00 app[web.7]:     at Object.limit [as handle] (/app/node_modules/express/node_modules/connect/lib/middleware/limit.js:45:47)
45:45+00:00 app[web.7]:     at next (/app/node_modules/express/node_modules/connect/lib/proto.js:190:15)
45:45+00:00 app[web.7]:     at Object.logger [as handle] (/app/node_modules/express/node_modules/connect/lib/middleware/logger.js:157:5)
45:45+00:00 app[web.7]:     at next (/app/node_modules/express/node_modules/connect/lib/proto.js:190:15)
45:45+00:00 app[web.7]:     at Object.favicon [as handle] (/app/node_modules/express/node_modules/connect/lib/middleware/favicon.js:78:7)
45:45+00:00 app[web.7]:     at next (/app/node_modules/express/node_modules/connect/lib/proto.js:190:15)
45:45+00:00 app[web.7]:     at Object.expressInit [as handle] (/app/node_modules/express/lib/middleware.js:31:5)
45:45+00:00 app[web.7]:     at next (/app/node_modules/express/node_modules/connect/lib/proto.js:190:15)
45:45+00:00 app[web.7]:     at Object.query [as handle] (/app/node_modules/express/node_modules/connect/lib/middleware/query.js:44:5)
45:45+00:00 app[web.7]: POST /mls 413 1ms - 980

我已经包含了最后一条日志记录,因为我不确定它是否暗示了发生这些错误的 HTTP URL,或者它是否是 Heroku dyno 正在处理的下一个请求的 URL(我们每秒收到数百个请求,所以它是跟踪有点疯狂)。

我的应用程序(ExpressJS)需要接收大型 POST 请求,这就是我提出的原因

app.use(express.limit('5mb'));

在应用程序顶部以允许大型帖子请求(通常小于 2MB)。我不确定上述错误是否是由于接收到太大的请求或尝试向 S3 发送太大的请求或其他原因引起的。有任何想法吗?

谢谢!

4

2 回答 2

4

如果您使用 Express v4+,您可以执行以下操作:

app.use(bodyParser.json());
app.use(bodyParser({limit: '5mb'}));

或者你可以试试下面的单行解决方案,但是我没有亲自测试过

app.use(bodyParser.json({limit: '1mb'}));
于 2014-08-18T20:00:51.970 回答
1

虽然该解决方案在某些情况下有效,但如果您尝试上传的内容中app.use(bodyParser({limit: '5mb'}));有很多 & 符号,它就无法正常工作。&这是因为正文解析器将基于&. &对我有用的解决方案是使用encodeURIComponent('&')Regex替换所有出现的。所以你有了:

contentToUpload = contentToUpload .replace(/&/g, encodeURIComponent('&'))
于 2018-12-30T12:16:37.513 回答