如何解决TypeError:functions.https.onCall不是函数?

Ros*_*des 2 firebase firebase-tools google-cloud-functions firebase-cli

我有一个我今年早些时候创建的Firebase项目.它使用云功能在实时数据库上运行某些操作.

昨天,我了解了可调用云功能,所以我决定在我的应用程序中尝试它,看看我是否应该更新我现有的功能.我为测试目的创建了一个简单的云函数:

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

但是当我尝试部署此函数时,我收到错误:

错误:解析函数触发器时发生错误.

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

我知道Callable Cloud Functions已经在最新的Firebase SDK中引入,所以我尝试使用以下方法更新它:

sudo npm install -g firebase-tools
Run Code Online (Sandbox Code Playgroud)

但我还不能部署我的云功能.我也尝试过部分部署,如Firebase文档中所示,但它没有用.文档中有没有我遗漏的东西?

Ros*_*des 7

仅更新Firebase CLI无法解决问题,因为您还必须更新项目目录中的Cloud Functions SDK.您提到Firebase项目已于今年早些时候初始化,因此在可调用云功能发布之前.

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

sudo npm i --save firebase-functions@latest
Run Code Online (Sandbox Code Playgroud)