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

时间:2018-08-03 15:36:06

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

在最近更新之后,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不同的方式推出。

Wat似乎很奇怪,如果我现在部署引擎设置为节点8的firebase函数,则会出现如下错误:

  

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

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

现在看来与我期望的相反!

因此,我正在使用最新的后台函数API,但似乎无法在Node.js 8上正确运行它们。有任何线索吗?

2 个答案:

答案 0 :(得分:4)

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

此错误消息对我来说显示在1.x.x firebase-functions中,而在升级后消失了。

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

答案 1 :(得分:0)

听起来您正在混淆很多东西。

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

第二,Firebase API在firebase-functions 1.0.0中进行了更改。听起来您已经意识到这一点。 API的更改与目标节点版本无关。节点版本对API无效。