Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Firebase:如何调用https.onCall函数node.js?_Javascript_Node.js_Firebase_Google Cloud Platform_Google Cloud Functions - Fatal编程技术网

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

Javascript Firebase:如何调用https.onCall函数node.js?,javascript,node.js,firebase,google-cloud-platform,google-cloud-functions,Javascript,Node.js,Firebase,Google Cloud Platform,Google Cloud Functions,根据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.t

根据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.page++;
控制台日志(数据);
var testing=firebase.functions().httpscalable('test');
而(数据页<5){
测试({page:data.page})。然后(res=>{
控制台日志(“完成”);
})
}
});
但是,运行此操作时,我会出现以下错误:

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


我做错了什么?

您似乎没有将客户端云功能SDK包含到您的web应用程序中。根据您包括其他Firebase SDK的方式,您可能需要这样做,或者将其包括在另一个Firebase SDK中(例如

有关的文档中介绍了该过程。

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();
const firebase=require('firebase/app');
要求(“firebase/功能”);
const firebaseConfig={};
const app=firebase.initializeApp(firebaseConfig);
const functions=app.functions();

可能重复的问题这里有一个类似的问题供您参考@TravisWebb,它不是重复的。错误可能相同,但您链接的问题是试图在浏览器中运行节点脚本。OP here正在尝试从浏览器中调用云函数,在这种情况下,它们需要包括客户端
firebase函数
SDK。我已经包括firebase和firebase函数,如下所示:
const firebase=require(“firebase”);const functions=require('firebase-functions')我也尝试过
firebase.functions().httpscalable('test')以及
函数.httpscalable('test')总是相同的错误。我还应该提到,这些代码都在firebase项目的functions目录下的index.js文件中。据我所知,这不是一个“web应用程序”或任何东西,它只是node.js中项目的功能。如果您试图从另一个firebase函数调用一个firebase函数,可能会使事情过于复杂。看到这个答案:@robsiemb我也有同样的问题。如果您想按照微服务方法实现您的系统,一般的想法是将系统划分为服务并公开API。在我的例子中,我也不希望所有的API都被客户端直接禁用,必须通过中介服务连接它们。在这种情况下,我需要使用HTTPS可调用触发器。那么,这可以通过使用Nodejs的web SDK来实现吗?我现在就是这么做的,但是在部署时我得到了错误类型error:app.functions不是一个函数,所以我的问题最终与npm有关。我删除了我的package-lock.json和node_modules文件夹,并重新安装了所有内容。在那之后,你的答案奏效了!谢谢
const firebase = require('firebase/app');
require('firebase/functions');
const firebaseConfig = {<YOUR_CONFIG_HERE>};
const app = firebase.initializeApp(firebaseConfig);
const functions = app.functions();