根据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
包,而不是来自firebase
或firebase-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