[英]Vue + Firebase: Functions useEmulator() ignored
我在Firebase 文檔firebase.functions().useEmulator('localhost', 5001)
中找到了這行代碼,據說它會將你的 Vue 應用程序指向本地運行的模擬器,但由於某種原因,我的項目忽略了這行代碼並繼續改為調用遠程部署的 function。
這是我的@/plugins/firebase.js
的相關部分的樣子:
import firebase from 'firebase/app';
import 'firebase/functions';
firebase.initializeApp({
apiKey: process.env.VUE_APP_FIREBASE_API_KEY,
authDomain: process.env.VUE_APP_FIREBASE_AUTH_DOMAIN,
databaseURL: process.env.VUE_APP_FIREBASE_DATABASE_URL,
projectId: process.env.VUE_APP_FIREBASE_PROJECT_ID,
storageBucket: process.env.VUE_APP_FIREBASE_STORAGE_BUCKET,
messagingSenderId: process.VUE_APP_FIREBASE_MESSAGE_SENDER_ID,
appId: process.env.VUE_APP_FIREBASE_APP_ID,
measurementId: process.env.VUE_APP_FIREBASE_MEASUREMENT_ID
});
firebase.functions().useEmulator('localhost', 5001);
const func = {
botcheck: firebase.app().functions('europe-west2').httpsCallable('validateRecaptcha'),
};
export { func };
然后調用 botcheck function,我將在 Vuex 操作中運行以下命令:
const fb = require('@/plugins/firebase');
...
await fb.func.botcheck();
我究竟做錯了什么? 如何讓它正確指向我本地運行的模擬器?
Vue 項目版本:
函數項目版本:
讓我知道是否需要包含其他信息。
這一行:
firebase.functions()
在功能上等同於:
firebase.app().functions('us-central1')
在您當前的代碼中,您將未指定區域的函數連接到模擬器。 因為在使用時指定區域為europe-west2
,所以需要將europe-west2
函數連接到模擬器。 您可以通過更改此行來做到這一點:
firebase.functions().useEmulator('localhost', 5001);
使用正確的區域:
firebase.app().functions('europe-west2').useEmulator('localhost', 5001)
Additional Note: While firebase.functions()
and firebase.app().functions()
return the same instance of a Functions
object (connected to the us-central1
region), firebase.app().functions('us-central1')
(您在該區域中傳遞的位置)返回Functions
的不同實例。 您需要將您使用的每個實例連接到模擬器。
這是您的代碼,因為我確保使用 Firebase 模擬器的 Cloud Functions 正確配置了useEmulator()
。 隨意嘗試:
import firebase from 'firebase/app';
import 'firebase/functions';
const firebaseConfig = {
// Your config
};
const app = firebase.initializeApp(firebaseConfig);
const functions = app.functions('europe-west2');
functions.useEmulator('localhost', 5001);
const func = {
botcheck: functions.httpsCallable('validateRecaptcha'),
};
export { func };
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.