在Firebase客户端应用程序中实现可调用的云功能

Bik*_*mat 3 firebase google-cloud-functions

我最近发现了Firebase可调用函数,它允许我从客户端调用HTTPS触发器(和auth()支持).

我很难在我现有的Firebase Web客户端应用程序中实现这一新功能.

我有一些运行的云函数,其中有一些我希望转换为HTTPS可调用函数的HTTPS函数(带有functions.https.onCall).

文件表明:

Set up your client development environment
<script src="https://www.gstatic.com/firebasejs/4.12.0/firebase.js"></script>
<script src="https://www.gstatic.com/firebasejs/4.12.0/firebase-functions.js"></script>
Run Code Online (Sandbox Code Playgroud)

我的代码是:

import firebase from 'firebase';
import 'firebase/firestore';

const firebaseApp = firebase.initializeApp({
  apiKey: '....',
  authDomain: '....',
  databaseURL: '....',
  projectId: '....',
  storageBucket: '....',
  messagingSenderId: '....',
});

const db = firebaseApp.firestore();
const auth = firebaseApp.auth();
const functions = firebaseApp.functions();

export { db, auth, functions };
Run Code Online (Sandbox Code Playgroud)

当我运行我的应用程序时,我收到以下错误:

Uncaught TypeError: firebaseApp.functions is not a function
Run Code Online (Sandbox Code Playgroud)

我曾尝试yarn add firebase-functions,然后import 'firebase-functions但随后的应用需要firebase-admin.我担心这对客户端应用来说太过分了,所以我可能会走错方向.

有人可以帮我解决这个问题吗?(!)这个问题是不是有关云功能(节点JS)服务器端的火力地堡SDK.它是关于直接从Firebase Web应用程序调用云功能.谢谢!

更新: 感谢@ Andrew的帖子,这解决了我的问题:

我的配置

import firebase from 'firebase';
import 'firebase/firestore';
import '@firebase/functions';
import firestoreConfig from '@/config/firestore';

const firebaseApp = firebase.initializeApp(firestoreConfig /* The JSON configuration from my Firebase project */);

const db = firebaseApp.firestore();
const auth = firebaseApp.auth();
const functions = firebaseApp.functions();

export { db, auth, functions };
Run Code Online (Sandbox Code Playgroud)

使用配置:

import { db, functions } from '@/database/firestoreInit';

export default {
  addMessage(text) {
    const addMessage = functions.httpsCallable('addMessage');
    return addMessage({ text }).then(result => result);
  },
}
Run Code Online (Sandbox Code Playgroud)

小智 7

我自己遇到了同样的问题并通过安装和导入@firebase/functions npm包解决了这个问题.我在github上找到了解决方案:https: //github.com/firebase/firebase-js-sdk/blob/master/packages/functions/README.md

从github上的README:

ES模块

import firebase from '@firebase/app';
import '@firebase/functions'
// Do stuff w/ `firebase` and `firebase.functions`
Run Code Online (Sandbox Code Playgroud)

CommonJS模块

const firebase = require('@firebase/app').default;
require('@firebase/functions');

// Do stuff with `firebase` and `firebase.functions`
Run Code Online (Sandbox Code Playgroud)

希望有所帮助!实际的文档不是很清楚为了调用函数必须这样做.