【问题标题】:Node.js Express. Large body for bodyParserNode.js 快递。 bodyParser 的大主体
【发布时间】:2014-10-09 13:14:29
【问题描述】:


我使用 Express.js 4.2 版并想解析一个大帖子(150K - 1M),但收到错误消息“请求实体太大”。似乎限制是 100 K。我现在不知道如何更改 Express 4 中的限制。在 Express 3.x 中我只是做了 -

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

如何更改 Express 4 中的限制?

感谢您的帮助。

【问题讨论】:

  • 限制不在 Express 中,而是在中间件中。您在 Express 4 中使用什么中间件?
  • 如果有人因为body-parser 似乎没有在听你的limits 一直在拔头发(就像我一样),请查看这个答案:stackoverflow.com/a/40745569/993683 ==>可能是nginx(或等效)限制

标签: node.js express


【解决方案1】:

使用 Express 4,您必须安装 body-parser 模块并改用它:

var bodyParser = require('body-parser');

// ...

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

【讨论】:

  • 嗨。你让我走上正轨。我已经做到了,但犯了一个大错误,我分两步完成了。首先只有 app.use(bodyParser.json());和 agin app.use(bodyParser.json({limit: '5mb'}));在您回答后,我仔细检查了我的代码并删除了第一个 app.use 并且一切正常。愚蠢的我,非常感谢你的快速回答和帮助找到我的错误。谢谢。
  • 那么,如果有人以 POST 形式发送个人资料图片,这是否计入限制?还是由不同的中间件处理,所以它没有?
  • @Costa bodyParser 模块不处理 multipart/form-data 请求(如果您正在谈论上传文件,就会出现这种情况)。
  • @mscdex 除非他发送的是 base64 编码图像。
  • 对于 Express 中路由器系统的新手:这些更改在您的路由上方的主 app.js 页面上进行,而不是在 routes/.js 文件中。
【解决方案2】:

Mscdex 的代码有效,但我们现在应该添加另一个参数以避免警告。

app.use(bodyParser.urlencoded({limit: '5mb', extended: true}));

【讨论】:

    【解决方案3】:

    Express v4.x.x

    Node.js v9.x.x

    这取决于您是以 JSON 格式还是通过参数化 URL 查询接收数据。

    我在发送大型 JSON 缓冲区时遇到了同样的问题。该文件约为 43KB,我从中间件传入 express API。

    我是这样处理的:

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

    当主体是一个大型 JSON 对象时,这为我解决了问题。

    【讨论】:

      猜你喜欢
      • 2013-03-27
      • 1970-01-01
      • 2015-11-05
      • 1970-01-01
      • 1970-01-01
      • 2014-01-25
      • 2015-04-12
      • 2011-07-05
      • 1970-01-01
      相关资源
      最近更新 更多