FirebaseError:Firebase:名为“[DEFAULT]”的 Firebase 应用程序已经存在(应用程序/重复应用程序)

BHA*_*ORA 3 android firebase react-native firebase-authentication

我在我的 react-native expo 项目中收到此错误:FirebaseError: Firebase: Firebase App named '[DEFAULT]' already exists (app/duplicate-app)。我已经交叉检查了我的项目,并且我没有在项目的其他任何地方导入 firebase。我还制作了一个 firebase.js 文件并在那里初始化了 firebase 配置。这是我的代码:

这是我的 firebase.js 文件

import firebase from "firebase";
const firebaseConfig = {
  apiKey: "XXXXXXXXXXXX",
  authDomain: "XXXXXXXXXXXX",
  databaseURL: "XXXXXXXXXXXX",
  projectId: "XXXXXXXXXXXX",
  storageBucket: "XXXXXXXXXXXX",
  messagingSenderId: "XXXXXXXXXXXX",
  appId: "XXXXXXXXXXXX",
};
const Firebase = firebase.initializeApp(firebaseConfig);
export default Firebase;

Run Code Online (Sandbox Code Playgroud)

这是我想在其中使用 firebase 的 Signin.js 文件。

import { StatusBar } from "expo-status-bar";
import React, { useState } from "react";
import {
  StyleSheet,
  Text,
  View,
  TextInput,
  TouchableOpacity,
  Picker,
  ScrollView,
} from "react-native";
import { FontAwesome } from "@expo/vector-icons";
import { LinearGradient } from "expo-linear-gradient";
import firebase from "./firebase";
import "firebase/auth";

function Signin() {
  firebase
    .auth()
    .signInWithEmailAndPassword("bhavansharora21@gmail.com", "bhavansh")
    .catch(function (error) {});
}
export default function LogIn({ navigation }) {
  const [selectedValue, setSelectedValue] = useState("java");

  return (
    <View style={styles.container}>
      <View style={styles.header}>
        <Text style={styles.header_text}>Register</Text>
      </View>
      <View style={styles.footer}>
        <ScrollView
          showsVerticalScrollIndicator={false}
          style={styles.ScrollView}
          show
        >
          <Text style={styles.fields}>Name</Text>

          <TextInput
            placeholder="Enter your Name"
            style={styles.input}
          ></TextInput>
          <Text style={styles.fields}>Email</Text>

          <TextInput placeholder="Enter Email" style={styles.input}></TextInput>

          <Text style={styles.fields}>Password</Text>

          <TextInput placeholder="Enter Password" style={styles.input} />
          <Text style={styles.fields}>Confirm Password</Text>

          <TextInput
            placeholder="Enter Confirm Password"
            style={styles.input}
          />
          <View style={styles.picker}>
            <TouchableOpacity style={styles.position}>
              <LinearGradient
                colors={["#08d4c4", "#01ab9d"]}
                style={styles.picker_gradient}
              >
                <Text style={styles.button_text}>Passenger</Text>
              </LinearGradient>
            </TouchableOpacity>
            <TouchableOpacity
              style={styles.position}
              onPress={() => navigation.navigate("SignIn")}
            >
              <Text style={styles.sign_button_text}>Rider</Text>
            </TouchableOpacity>
          </View>

          <TouchableOpacity style={styles.button} onPress={() => Signin()}>
            <LinearGradient
              colors={["#08d4c4", "#01ab9d"]}
              style={styles.gradient_style}
            >
              <Text style={styles.button_text}>Register</Text>
            </LinearGradient>
          </TouchableOpacity>
          <TouchableOpacity
            style={styles.sign_button}
            onPress={() => navigation.navigate("LogIn")}
          >
            <Text style={styles.sign_button_text}>Log In</Text>
          </TouchableOpacity>
        </ScrollView>
      </View>
    </View>
  );
}
Run Code Online (Sandbox Code Playgroud)

Erk*_*urt 7

我假设您在执行热重载等操作时遇到错误...无论如何问题是,Firebase 尝试使用完全相同的配置创建新实例,而它不能。所以它会抛出一个错误。您可以通过简单的 if 检查来克服此错误:

if (firebase.apps.length === 0) {
  firebase.initializeApp(firebaseConfig);
}
Run Code Online (Sandbox Code Playgroud)