How to solve TypeError: functions.https.onCall is not a function?

How to solve TypeError: functions.https.onCall is not a function?

我有一个今年早些时候创建的 Firebase 项目。它使用 Cloud Functions 运行 实时数据库上的一些操作。

昨天,我了解了 Callable Cloud Functions,所以我决定在我的应用程序中试用它,看看我是否应该更新我现有的功能。我创建了一个简单的 Cloud Function 用于测试目的:

exports.testCall = functions.https.onCall((data, context) =>{
    console.log(context.auth.uid);
    return {response:"This means success"};
});

但是当我尝试部署此功能时,出现错误:

Error: Error occurred while parsing your function triggers.

TypeError: functions.https.onCall is not a function at Object. (/tmp/fbfn_7614ijhDwX0NY98S/index.js:114:36) at Module._compile (module.js:649:30) at Object.Module._extensions..js (module.js:660:10) at Module.load (module.js:561:32) at tryModuleLoad (module.js:501:12) at Function.Module._load (module.js:493:3) at Module.require (module.js:593:17) at require (internal/module.js:11:18) at /usr/local/lib/node_modules/firebase-tools/lib/triggerParser.js:18:11 at Object. (/usr/local/lib/node_modules/firebase-tools/lib/triggerParser.js:32:3)

我知道最新的 Firebase SDK 中引入了 Callable Cloud Functions,因此我尝试使用以下方式更新它:

sudo npm install -g firebase-tools

但我还不能部署我的 Cloud Functions。我也尝试过部分部署,如 Firebase docs 所示,但没有成功。我在文档中遗漏了什么吗?

仅仅更新 Firebase CLI 并不能解决问题,因为您还必须更新项目目录中的 Cloud Functions SDK。您提到 Firebase 项目已于今年早些时候初始化,所以那是在 Callable Cloud Functions 发布之前。

请注意,当您在 Firebase 项目中初始化 Cloud Functions 时,它会创建包含 Cloud Functions SDK 的 functions 目录。所以你(可能)在 functions 目录中仍然有旧的 SDK,你需要更新它。为此,请导航到该目录并 运行 命令:

sudo npm i --save firebase-functions@latest