(Firebase / Cloud Functions) PayloadTooLargeError: too many parameters at queryparse

(Firebase / Cloud Functions) PayloadTooLargeError: too many parameters at queryparse

我有一个由第 3 方应用程序中的 webhook 触发的 firebase 函数。他们使用 application/x-www-urlencoded 类型对我的函数进行了 post 调用,并且在他们的 post 主体中有超过 1000 个参数。 1000 是 body-parser 包中的默认参数数量,当它达到限制时会抛出错误。

PayloadTooLargeError: too many parameters at queryparse 
(/srv/node_modules/body-parser/lib/types/urlencoded.js:151:13) at parse 
(/srv/node_modules/body-parser/lib/types/urlencoded.js:75:9)

据我所知,firebase 函数在后台也有 express 和 body-parser 运行,我想知道是否有办法修改这些参数限制。我看到了一些修改这些设置的示例,但是下面的解决方案不适用于 firebase 函数,因为它没有修改 firebase 函数后面的实际 body-parser 运行。

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

app.use(bodyParser.urlencoded({
        extended: false,
     parameterLimit: 10000,
     limit: 1024 * 1024 * 10
}));

如有任何建议或解决方案,我们将不胜感激。谢谢。

我认为主体解析中间件的行为无法以任何方式改变。 documentation 中没有任何建议配置选项的内容。

如果可能,我建议改为让客户端 POST 一个 JSON 负载,它可以包含您想要的任何有效 JSON。

另一种选择可能是不使用 JavaScript 运行时,并尝试 Python 或 Go,而是使用 Google 云部署工具。您将无法再使用 Firebase CLI,但其他运行时可能具有适合您需求的不同行为。