Firebase:如何调用https.onCall函数node.js



根据Firebase的文档,以下代码可用于调用名为addMessage的onCall函数。

var addMessage = firebase.functions().httpsCallable('addMessage');
addMessage({text: messageText}).then(function(result) {
// Read result of the Cloud Function.
var sanitizedMessage = result.data.text;
})

我有一个名为test的函数,在Javascript中有以下代码(只是为了测试这个功能(:

exports.test = functions.https.onCall((data, context) => {
console.log(data);
data.page++;
console.log(data);
var testing = firebase.functions().httpsCallable('test');
while(data.page < 5) {
testing({page: data.page}).then(res => {
console.log("done");
})
}
});

然而,当运行此程序时,我会得到以下错误:

未处理的错误类型错误:firebase.functions不是函数

我做错了什么?

firebase.functions()方法来自firebase/functions包,而不是来自firebasefirebase-functions

const firebase = require('firebase/app');
require('firebase/functions');
const firebaseConfig = {<YOUR_CONFIG_HERE>};
const app = firebase.initializeApp(firebaseConfig);
const functions = app.functions();

您似乎没有在web应用程序中包含客户端云函数SDK。根据包含其他Firebase SDK的方式,您可能需要执行Phani链接到的操作,或者将其包含在另一个(例如<script src="https://www.gstatic.com/firebasejs/7.2.3/firebase-functions.js"></script>(中。

有关设置客户端开发环境的文档中介绍了该过程。

尝试将脚本定义添加到app.js

scriptInit = (scrName) => {
const script = document.createElement("script");
script.src = scrName;
script.async = false;
script.type="module"
document.body.appendChild(script);
}
componentWillMount() {
this.scriptInit("https://www.gstatic.com/firebasejs/9.1.3/firebase-app.js");
this.scriptInit("https://www.gstatic.com/firebasejs/9.1.3/firebase-functions.js");
}

对于函数调用,以下操作有效:

const firebase = require("firebase/app");
const functions = require("firebase/functions");
const firebaseConfig = {FIREBASE_CONFIG};
const app = firebase.initializeApp(FIREBASE_CONFIG);
const functionsFB = functions.getFunctions(app);
return (async () => {
let fbSomeFuncName =  (functions.httpsCallable(functionsFB, 'somefunction'))
let data = await fbSomeFuncName().then(data=>{return (data.data)}).catch(err=>{console.log("error:"+err)})
return data
// don't forget to add data to the response 

相关内容

最新更新