簡體   English   中英

Firebase.auth().useEmulator 不是函數

[英]Firebase.auth().useEmulator is not a function

我目前通過 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 文檔,所以我不確定我做錯了什么。

可能您仍在使用 8.0.0 之前的firebase版本,在這種情況下,您要調用的方法是.useFunctionsEmulator方法(自 v8.0.0 起已棄用):

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

但是,如果您使用的是 v8 SDK,您可以通過以下方式將您的應用程序連接到模擬器:

firebase.auth().useEmulator("http://localhost:9099"); // Connect to the Authentication emulator

firebase.functions().useEmulator("localhost", 5001); // Connect to the Cloud Functions emulator

使用 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);

ufmemo 的解決方案是正確的。

更詳細的答案如下。

// import 'firebase/auth';
import { connectAuthEmulator } from "firebase/auth";

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM