Vue+Firebase:函数useEmulator()被忽略



我在Firebase文档firebase.functions().useEmulator('localhost', 5001)中发现了这行代码,据说它将您的Vue应用程序指向本地运行的模拟器,但由于某种原因,我的项目忽略了这行码,而是继续调用远程部署的函数。

以下是我的@/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函数,我将在Vuex操作中运行以下内容:

const fb = require('@/plugins/firebase');
...
await fb.func.botcheck();

我做错了什么?如何使它正确指向本地运行的模拟器?

Vue项目版本:

  • vue:2.6.11
  • 防火带:8.3.2

功能项目版本:

  • firebase管理员:9.2.0
  • firebase功能:3.11.0

如果需要包含其他信息,请告诉我。

此行:

firebase.functions()

在功能上等同于:

firebase.app().functions('us-central1')

在当前代码中,将未指定区域的函数连接到模拟器。因为在使用时将区域指定为europe-west2,所以需要将europe-west2函数连接到模拟器。您可以通过更改以下行来完成此操作:

firebase.functions().useEmulator('localhost', 5001);

使用正确的区域:

firebase.app().functions('europe-west2').useEmulator('localhost', 5001)

其他注意:虽然firebase.functions()firebase.app().functions()返回Functions对象的同一实例(连接到us-central1区域(,但firebase.app().functions('us-central1')(在区域中传递(返回Functions的不同实例。您需要将使用的每个实例连接到模拟器。

这是您的代码,因为我确保useEmulator()与Firebase Emulator的云函数正确配置。请随意尝试:

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 };

相关内容

  • 没有找到相关文章

最新更新