【发布时间】:2018-09-04 09:07:15
【问题描述】:
我最近发现了Firebase callable functions,它允许我从客户端调用类似 HTTPS 触发器的函数(并且支持 auth())。
我很难在我现有的 Firebase 网络客户端应用程序中实现这一新功能。
我有一些云函数正在运行,其中有一些我想转换为 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>
我的代码是:
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 };
当我运行我的应用程序时,出现以下错误:
Uncaught TypeError: firebaseApp.functions is not a function
我尝试了yarn add firebase-functions,然后是import 'firebase-functions,但该应用程序需要firebase-admin。我担心客户端应用程序太多了,所以我可能会走错方向。
有人可以帮我解决这个问题吗? (!) 此问题不是与服务器端 Firebase SDK for Cloud Functions (Node JS) 有关。它是关于直接从 Firebase 网络应用程序调用云函数。 谢谢!
更新: 感谢@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 };
使用配置:
import { db, functions } from '@/database/firestoreInit';
export default {
addMessage(text) {
const addMessage = functions.httpsCallable('addMessage');
return addMessage({ text }).then(result => result);
},
}
【问题讨论】:
标签: firebase google-cloud-functions