【问题标题】:Firebase.auth().useEmulator is not a functionFirebase.auth().useEmulator 不是函数
【发布时间】:2021-02-24 21:26:01
【问题描述】:

我目前通过 VueCLI 和 firebase-tools 设置了一个项目,但似乎无法在本地将 Firebase Auth 模拟器附加到我的项目。

我的 Firebase 设置文件:

import firebase from 'firebase/app';
import 'firebase/auth';
import 'firebase/firestore';
import 'firebase/storage';

const configOptions = {
    apiKey: process.env.VUE_APP_FIREBASE_API_KEY,
    authDomain: process.env.VUE_APP_FIREBASE_AUTH_DOMAIN,
    databaseURL: process.env.VUE_APP_FIREBASE_DB_URL,
    projectId: process.env.VUE_APP_FIREBASE_PROJECT_ID,
    storageBucket: process.env.VUE_APP_FIREBASE_STORAGE_BUCKET,
    messagingSenderId: process.env.VUE_APP_FIREBASE_MESSAGING_SENDER_ID,
    appId: process.env.VUE_APP_FIREBASE_APP_ID,
    measurementId: process.env.VUE_APP_FIREBASE_MEASUREMENT_ID
};

firebase.initializeApp(configOptions);

if (process.env.NODE_ENV === "development"){
    firebase.firestore().settings({ host: 'localhost:8080', ssl: false });
    firebase.auth().useEmulator('http://localhost:9099/');
}

export const firebaseauth = firebase.auth();
export const firestore = firebase.firestore();
export const firebasestorage = firebase.storage();
export default firebase;

我的 .env.development 文件

VUE_APP_I18N_LOCALE=en
VUE_APP_I18N_FALLBACK_LOCALE=en

VUE_APP_FIREBASE_API_KEY="xx"
VUE_APP_FIREBASE_AUTH_DOMAIN="localhost:9099"
VUE_APP_FIREBASE_DB_URL="http://localhost:4000"
VUE_APP_FIREBASE_PROJECT_ID="xx"
VUE_APP_FIREBASE_STORAGE_BUCKET="xx"
VUE_APP_FIREBASE_MESSAGING_SENDER_ID="xx"
VUE_APP_FIREBASE_APP_ID="xx"
VUE_APP_FIREBASE_MEASUREMENT_ID="xx"

导航到 localhost:5000(模拟主机)时,出现错误:

未捕获的类型错误:firebase_app__WEBPACK_IMPORTED_MODULE_0___default.a.auth(...).useEmulator is not a function

useEmulator 直接来自 Google 的 Firebase Documentation,所以我不确定自己做错了什么。

【问题讨论】:

  • 使用import * as firebase from '@firebase/testing',然后使用console.log(firebase),不会记录身份验证。也许由于模拟器处于测试阶段,身份验证尚未实现。不过,无论如何,我认为您需要使用@firebase/testing 进行设置。视频youtu.be/VDulvfBpzZE 让我比文档更深入……至少在 Firestore 中是这样。和你一样,我对身份验证感到困惑。

标签: javascript firebase firebase-authentication firebase-cli


【解决方案1】:

使用 JS SDK v9,您需要使用 connectFirestoreEmulator 函数。

请参阅文档https://firebase.google.com/docs/emulator-suite/connect_firestore

import { initializeApp } from "firebase/app";
import { getFirestore, connectFirestoreEmulator } from "firebase/firestore";

const config = {} //your config object here

const app = initializeApp(config);

// firebaseApps previously initialized using initializeApp()
const db = getFirestore();
connectFirestoreEmulator(db, 'localhost', 8080);

【讨论】:

  • op 是专门询问 firebase AUTH,而不是 firestore。你的答案有什么关系?
【解决方案2】:

可能您仍在使用早于 8.0.0 的 firebase 版本,在这种情况下,您要调用的方法是 .useFunctionsEmulator 方法(自 v8.0.0 起已弃用):

firebase.functions().useFunctionsEmulator('http://localhost:5001');

【讨论】:

  • 我使用的是 9.2.1,不能使用 useEmulator 或 useFunctionsEmulator。我不明白我错过了什么以及为什么这是公认的答案。 useFunctionEmulator 不是特定于云函数而不是 firestore 吗???
  • .useFunctionsEmulator 不能像 firestore 一样解决所有情况。
  • 每个 Firebase 产品都有自己的方法可以用来连接到模拟器。 Firebase Cloud Functions - Firebase Auth Firestore
  • 这没有回答问题。我正在使用 Firebase 9.16.6 版,但仍然收到“useEmulator is not a function”错误。
  • useFunctionsEmulator 可用于从本地服务器链接到云函数,但不能直接请求 Firestore!
猜你喜欢
  • 2018-07-13
  • 2017-03-08
  • 2018-10-13
  • 2016-09-27
  • 2018-08-17
  • 2018-07-22
  • 2019-10-23
  • 2019-12-27
  • 1970-01-01
相关资源
最近更新 更多