代码之家  ›  专栏  ›  技术社区  ›  Thijs Koerselman

为什么Node.js 8上的Firebase后台函数会抱怨事件参数?

  •  5
  • Thijs Koerselman  · 技术社区  · 6 年前

    在最近的更新之后,firebase工具希望我将package.json引擎设置设置为node 6或node 8。当您将其设置为6时,它将在节点6上部署功能,否则在节点8上部署功能。

    对于firebase函数1.0,后台函数签名从 event data, context . 我早就迁移了所有的后台功能。

    我注意到,根据@gloud/functions文档(它不同于firebase函数),您显式地设置了节点部署目标,并且在API中,节点6和8运行时之间的区别是相同的事件与数据/上下文签名。

    因此在@gloud/函数中,API的更改以不同于firebase函数的方式展开。

    奇怪的是,如果我现在在引擎设置为node 8的情况下部署我的firebase函数,就会出现如下错误:

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

    当我将引擎设置为node 6时,它会说它正在node.js 6上部署我的代码,一切都像以前一样工作。

    现在看来,这与我的预期相反!

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

    2 回复  |  直到 6 年前
        1
  •  5
  •   William Chong    6 年前

    问题是 firebase-functions needs to be 2.0.0+ 对于节点8运行时。

    此错误消息出现在1.x.x中 firebase函数 对我来说,升级后就不见了。

    请注意 firebase-admin also needs to be 5.13.0+ .

        2
  •  0
  •   Doug Stevenson    6 年前

    听起来你好像在把一堆东西混在一起。

    首先,@google cloud/functions和firebase函数可能不同步。他们的工作完全不同。不要以为一个惯例适用于另一个。为Firebase编写函数时,仅使用Firebase函数和Firebase CLI。您将无法使用gcloud。

    其次,Firebase函数1.0.0中的Firebase api发生了变化。听起来你已经意识到了。API更改与目标节点版本无关。节点版本不应影响api。