NodeJS / Express请求实体太大 - Heroku

时间:2013-03-26 01:01:40

标签: node.js heroku express

我到处寻找,似乎无法找到解释,这就是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发送过大的请求或其他原因造成的。有什么想法吗?

谢谢!

3 个答案:

答案 0 :(得分:4)

如果您使用的是Express v4 +,则可以使用

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

但请确保此行位于

之上
app.use(bodyParser.json());

否则无效

答案 1 :(得分:1)

尽管在某些情况下解决方案app.use(bodyParser({limit: '5mb'}));可以工作,但是如果您尝试上传的内容中包含很多与号&,则解决方案将无法正常工作。这是因为主体解析器将基于&进行拆分。对我有用的解决方案是使用Regex用&替换所有出现的encodeURIComponent('&')。 所以你有:

contentToUpload = contentToUpload .replace(/&/g, encodeURIComponent('&'))

答案 2 :(得分:-3)

我尝试在很多方面解决了这个问题,但最后我得到了解决方案和解决方案太简单的解决方案,我只是绕过代码,请按照以下步骤来帮助您解决问题 - 在项目中打开以下页面

node_modules \体解析器\ node_modules \生体\ index.js

并更改

if(typeof options.limit ===' number')         limit = options.limit

只需删除option.limit并添加数字,whatevr你的限制 例如。 limit = 10024