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

时间:2018-03-22 20:10:44

标签: firebase google-cloud-functions firebase-tools firebase-cli

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

昨天,我了解了Callable Cloud Functions,所以我决定在我的应用中尝试一下,看看我是否应该更新现有的功能。我已经为测试目的创建了一个简单的云函数:

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

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

  

错误:解析函数触发器时出错。

     

TypeError:functions.https.onCall不是函数       在对象。 (/tmp/fbfn_7614ijhDwX0NY98S/index.js:114:36)       在Module._compile(module.js:649:30)       at Object.Module._extensions..js(module.js:660:10)       在Module.load(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)       at /usr/local/lib/node_modules/firebase-tools/lib/triggerParser.js:18:11       在对象。 (/usr/local/lib/node_modules/firebase-tools/lib/triggerParser.js:32:3)

我知道最新的Firebase SDK中引入了Callable Cloud Functions,因此我尝试使用以下方法对其进行更新:

sudo npm install -g firebase-tools

但我还无法部署我的云功能。我已尝试部分部署,如Firebase docs所示,但它没有用。我的文档中是否缺少某些内容?

1 个答案:

答案 0 :(得分:7)

只需更新Firebase CLI即可解决问题,因为您还必须更新项目目录中的Cloud Functions SDK。您提到Firebase项目已在今年早些时候初始化,因此可以在Callable Cloud Functions发布之前进行。

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

sudo npm i --save firebase-functions@latest