[Vue 警告]:v-on 处理程序中的错误:“TypeError: Object(...)(...).httpsCallable(...).then 不是函数”

Posted

技术标签:

【中文标题】[Vue 警告]:v-on 处理程序中的错误:“TypeError: Object(...)(...).httpsCallable(...).then 不是函数”【英文标题】:[Vue warn]: Error in v-on handler: "TypeError: Object(...)(...).httpsCallable(...).then is not a function" 【发布时间】:2021-12-04 15:57:30 【问题描述】:

我正在尝试从我的 Vue 应用程序调用这个 firebase 云函数

exports.sayHi = functions.https.onCall((data, context) =>
  return "hi";
);

这是我在店里的动作

import 
  getFirebaseDB,
  getFirebaseFunctions,
 from "../../helpers/firebase/authUtils";

reserveApt() 
    getFirebaseFunctions()
      .httpsCallable("sayHi")
      .then((result) => 
        console.log(result);
      );
  ,

这是我在 ../../helpers/firebase/authUtils 中的辅助函数:

import firebase from "firebase/app";
import "firebase/auth";
import "firebase/firestore";
import "firebase/functions";

/**
 * Initilize the backend
 * @param * config
 */
const initFirebaseBackend = (config) => 
  if (!_fireBaseBackend) 
    _fireBaseBackend = new FirebaseAuthBackend(config);
    _db = firebase.firestore();
    _functions = firebase.functions();
  
  return _fireBaseBackend;
;


/**
 * Returns the firebase backend
 */
const getFirebaseBackend = () => 
  return _fireBaseBackend;
;


/**
 * returns firestore db
 */
const getFirebaseDB = () => 
  if (!_db) 
    _db = firebase.firestore();
  
  return _db;
;


/**
 * returns firebase functions
 */
const getFirebaseFunctions = () => 
  if (!_functions) 
    _functions = firebase.functions();
  
  return _functions;
;


export 
  initFirebaseBackend,
  getFirebaseBackend,
  getFirebaseDB,
  getFirebaseFunctions,
;

Firebase 已正确初始化,并且所有其他功能(如 auth 和 firestore)都可以正常工作,但是当我调用它时,会出现以下错误:

[Vue warn]: Error in v-on handler: "TypeError: Object(...)(...).httpsCallable(...).then is not a function"

found in

---> <Properties> at src/views/pages/property/properties.vue
       <App> at src/App.vue
         <Root>

【问题讨论】:

你可以试试这个solution 谢谢@AlanOmar 我刚刚想通了。但我不确定为什么这是解决方案。直接调用它似乎是合理的。 【参考方案1】:

显然问题在于调用函数。我不得不这样称呼它:

var reserve = getFirebaseFunctions().httpsCallable("sayHi");
    reserve().then((result) => 
      console.log(result);
    );

但我不知道为什么!!

【讨论】:

以上是关于[Vue 警告]:v-on 处理程序中的错误:“TypeError: Object(...)(...).httpsCallable(...).then 不是函数”的主要内容,如果未能解决你的问题,请参考以下文章

[Vue 警告]:v-on 处理程序中的错误:“TypeError: Object(...)(...).httpsCallable(...).then 不是函数”

无法绑定 v-on:单击 Vuetify [Vue 警告]:v-on 处理程序中的错误:“TypeError:handler.apply 不是函数”

错误:“v-on 处理程序中的错误:“TypeError:this.filter 未定义”在 vue 中的列表呈现中?

如何将对象处理程序传递给 vue 组件

使用 Composition API 在 Vue 中处理子项和父项中的提交事件

如何摆脱 v-on 处理程序中的错误:“TypeError:_vm.myFcn 不是函数”?