Как использовать эмуляторы firebase в веб-приложении react

#reactjs #firebase #firebase-tools

#reactjs #firebase #firebase-инструменты

Вопрос:

Как я могу использовать эмуляторы firebase локально для:

Я могу запускать эмуляторы локально на порту 4000, однако я не могу запустить свое приложение react локально, чтобы использовать его.

  1. Облачные функции
  2. Аутентификация
  3. Firestore

У меня есть файл с именем firebase.js который содержит следующее:

 import firebase from "firebase/app";
import "firebase/auth";

let config = {
  apiKey: process.env.REACT_APP_FIREBASE_API_KEY,
  authDomain: process.env.REACT_APP_FIREBASE_AUTH_DOMAIN,
  databaseURL: process.env.REACT_APP_FIREBASE_DB_URL,
  projectId: process.env.REACT_APP_FIREBASE_PROJECT_ID,
  storageBucket: process.env.REACT_APP_FIREBASE_STORAGE_BUCKET,
  messagingSenderId: process.env.REACT_APP_FIREBASE_MESSAGE_SENDER_ID,
  appId: process.env.REACT_APP_FIREBASE_APP_ID,
  measurementId: process.env.REACT_APP_FIREBASE_MEASUREMENT_ID,
};

export default app;
  

Внутри других моих файлов я вызываю firebase, например, для аутентификации:

   //Login
  const login = async (email, password) => {
    return await app.auth().signInWithEmailAndPassword(email, password);
  };
  

Ответ №1:

 import firebase from "firebase/app";
import "firebase/auth";
import "firebase/functions";
import "firebase/firestore";

let config = {
  apiKey: process.env.REACT_APP_FIREBASE_API_KEY,
  authDomain: process.env.REACT_APP_FIREBASE_AUTH_DOMAIN,
  databaseURL: process.env.REACT_APP_FIREBASE_DB_URL,
  projectId: process.env.REACT_APP_FIREBASE_PROJECT_ID,
  storageBucket: process.env.REACT_APP_FIREBASE_STORAGE_BUCKET,
  messagingSenderId: process.env.REACT_APP_FIREBASE_MESSAGE_SENDER_ID,
  appId: process.env.REACT_APP_FIREBASE_APP_ID,
  measurementId: process.env.REACT_APP_FIREBASE_MEASUREMENT_ID,
};

const app = firebase.initializeApp(config);

if (window.location.hostname === "localhost") {
  app.functions().useFunctionsEmulator("http://localhost:5001");
  app.auth().useEmulator("http://localhost:9099");
  app.firestore().settings({
    host: "localhost:8080",
    ssl: false,
  });
}

export default app;