Firebase 和 React js - Firebase:名为“[DEFAULT]”的 Firebase 应用程序已经存在(app/duplicate-app)

Geo*_*ale 6 javascript firebase reactjs

首先,我已经浏览了我的代码并且没有看到我可能会多次初始化应用程序的任何地方(除非我遗漏了一些东西)。

我知道之前有人问过并回答过这个问题,但我不确定如何将解决方案应用于我自己的代码,因为我刚刚开始使用 Firebase。

我得到的错误是:名为“[DEFAULT]”的 Firebase 应用程序已经存在(应用程序/重复应用程序)。

这是我的配置组件:

     export const DB_CONFIG = {
      apiKey: "AIzaSyDj_UQoRkOWehv-Ox2IAphOQPqciE6jL6I",
      authDomain: "react-notes-38f8a.firebaseapp.com",
      databaseURL: "https://react-notes-38f8a.firebaseio.com",
      projectId: "react-notes-38f8a",
      storageBucket: "react-notes-38f8a.appspot.com",
      messagingSenderId: "1063805843776"
    };
Run Code Online (Sandbox Code Playgroud)

这是 App.js

      constructor(props){
      super(props);
      this.app = firebase.initializeApp(DB_CONFIG);
      this.database = this.app.database().ref.child('notes')
      this.state = {
        notes: [
        ],
      }
    }

  componentWillMount(){
    const previousNotes = this.state.notes;
    this.database.on('child_added', snap => {
      previousNotes.push({
        id: snap.key,
        noteContent: snap.val().noteContent
      })
    })
    this.setState({
      notes: previousNotes
    })
  }
Run Code Online (Sandbox Code Playgroud)

per*_*st1 6

解决起来很简单

在条件块中初始化 Firebase。

if(!firebase.apps.length)
   firebase.initializeApp(DB_CONFIG);
Run Code Online (Sandbox Code Playgroud)

分析:如果我们不在条件块内执行“初始化 Firebase” 那么到目前为止,它只会被重新初始化弄糊涂

附加说明:此问题配置组件无关,出于安全考虑,我们应尽量不要透露 firebase 配置凭据。


sdk*_*kcy 5

如果在这种情况下定义了您的应用程序,您的问题将得到解决。

if (!firebase.apps.length) {
   firebase.initializeApp(DB_CONFIG);
}
Run Code Online (Sandbox Code Playgroud)