Firebase 错误:未创建 Firebase 应用默认值

Ayu*_*mar 8 firebase reactjs react-native redux

我正在使用react-native 和redux 制作一个送餐应用程序。我想从 firebase 存储中获取数据,为此,我在actions .js 中编写了一个函数,但每当我运行该应用程序时,它都会显示错误

Firebase: No Firebase App '[DEFAULT]' has been created - call Firebase App.initializeApp() (app/no-app).

这是我用来获取数据 action.js 的函数

import firebase from "firebase"
export const ProductDetails = (data) => {
  return {
    type: "PRODUCT_ITEMS",
    payload: {
      data,
    },
  };
};

var db = firebase.firestore();
var docRef = db.collection("Products").doc("Items");
export const FetchItems = () => {
  return async function (dispatch) {
    return await docRef
      .get()
      .then((doc) => {
        if (doc.exists) {
          console.log("Document Data", doc.data());
          dispatch(ProductDetails(doc.data));
        } else {
          console.log("NO such document");
        }
      })
      .catch((error) => {
        console.log(error);
      });
  };
};

Run Code Online (Sandbox Code Playgroud)

这是我的App.js文件

import React, { useState } from "react";
import { StyleSheet, Text, View, Dimensions } from "react-native";
import { NavigationContainer } from "@react-navigation/native";
import AppStack from "./components/navigation/AppStack";

import firebase from "firebase";
import {Provider} from "redux"
import store from "./store"

import { useDispatch, useSelector, Provider } from "react-redux";
import store from "./redux/store";
import AppWrapper from "./AppWrapper";

export default function App() {
  
  const firebaseConfig = {
  };
  if (firebase.apps.length === 0) {
    firebase.initializeApp(firebaseConfig);
  }
  return  (
    <Provider store={store}>
      <NavigationContainer>
        <AppStack />
      </NavigationContainer>
    </Provider>
  );;
}


Run Code Online (Sandbox Code Playgroud)

Dha*_*raj 10

我建议创建一个单独的文件firebase.js,并在初始化后从那里导出 Firebase 服务。

firebase.js

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

const firebaseConfig = {...};

if (!firebase.apps.length) {
  firebase.initializeApp(config);
}

export const auth = firebase.auth();
export const firestore = firebase.firestore()
Run Code Online (Sandbox Code Playgroud)

然后将它们导入到需要的地方:

// App.js for example

import {firestore, auth} from './firebase.js'

//var docRef = firestore.collection("Products").doc("Items");

Run Code Online (Sandbox Code Playgroud)

  • 谢谢,兄弟,这对我有帮助,我添加了额外的一行 ```if(firebase.apps.length===0){firebase.initializeApp(config)}``` (2认同)

Yan*_*ang 8

对于使用 expo(v44) 和firebase(v9)的用户

firebaseUtil.js

import { initializeApp, getApp } from "firebase/app";
import { getFirestore } from "firebase/firestore";
import { getAuth } from "firebase/auth";

// Initialize Firebase
const firebaseConfig = {
  ...
};

const app = initializeApp(firebaseConfig);

const db = getFirestore(app);
const auth = getAuth(app);

export { db, auth };
Run Code Online (Sandbox Code Playgroud)

登录.js

import { auth } from "../../util/firebaseUtil";

export default function Login() {

  const onSignUp = () => {
    signInWithEmailAndPassword(auth, email, password);
  };

  return (
    ...
  )

}
Run Code Online (Sandbox Code Playgroud)