【问题标题】:Why would a Firebase background function on Node.js 8 complain about an event parameter?为什么 Node.js 8 上的 Firebase 后台函数会抱怨事件参数?
【发布时间】:2019-01-11 13:05:01
【问题描述】:

最近一次更新后,firebase-tools 希望我将 package.json 引擎设置设置为节点 6 或 8。当您将其设置为 6 时,它会在节点 6 上部署函数,否则在节点 8 上部署。

使用 firebase-functions 1.0,后台函数签名从 event 更改为 data, context。我早就迁移了我所有的后台功能。

我注意到,根据 @gloud/functions 文档(与 firebase-functions 不同),您明确设置了 Node 部署目标,并且 Node 6 和 8 运行时之间的 API 区别是相同的事件与数据/上下文签名。

因此,在 @gloud/functions 中,API 更改的推出方式与 firebase-functions 不同。

看起来很奇怪的是,如果我现在部署我的 firebase-functions 并将引擎设置为节点 8,我会收到如下错误:

云函数需要调用事件参数。

当我将引擎设置为节点 6 时,它说它正在 Node.js 6 上部署我的代码,一切正常。

现在这似乎与我的预期相反!

所以我正在使用最新的后台函数 API,但我似乎无法在 Node.js 8 上正确运行它们。某处似乎出现了问题。有什么线索吗?

【问题讨论】:

    标签: firebase google-cloud-firestore google-cloud-functions


    【解决方案1】:

    问题是节点 8 运行时的 firebase-functions needs to be 2.0.0+ 的版本。

    此错误消息出现在 1.x.x firebase-functions 中,在我升级后消失了。

    注意firebase-adminalso needs to be 5.13.0+

    【讨论】:

    • 我不确定哪些适用于我的案例,但听起来这可能是问题所在。
    【解决方案2】:

    听起来你在混淆一堆东西。

    首先,@google-cloud/functions 和 firebase-functions 可能不同步。它们的工作方式完全不同。不要假设一个约定适用于另一个。为 Firebase 编写函数时,仅使用 firebase-functions 和 Firebase CLI。您将无法使用 gcloud。

    其次,Firebase API 在 firebase-functions 1.0.0 中发生了变化。听起来你已经意识到了这一点。 API 更改与目标节点版本无关。节点版本应该对 API 没有影响。

    【讨论】:

    • 我没有使用@google-cloud/functions。我只提到它是因为这个问题似乎发生在节点 6 和 8 部署之间。我知道对于 Firebase 它不应该有所作为,但这就是我认为它如此奇怪的原因。我找不到在 Node 8 上部署这些函数会导致 API 不兼容的任何原因。我将再次尝试使用 firebase-tools 4.0.2 部署到节点 8。也许有些东西是固定的,因为......
    • 如果您有问题,请务必准确记录您使用的所有内容的版本(来自 package.json 等)。
    • 我已将 firebase-tools 升级到 4.0.2 并在 Node.js 8 上再次部署了我的代码。现在该错误似乎不再出现了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-06-15
    • 2019-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多