【问题标题】:Why does my program break? Why am I getting this error? [duplicate]为什么我的程序会中断?为什么我会收到此错误? [复制]
【发布时间】:2019-11-22 15:20:37
【问题描述】:

我正在尝试使用 React 和 Firebase 制作程序。我收到一个错误:

Firebase: Firebase App named '[DEFAULT]' already exists (app/duplicate-app).

如何只初始化一次以消除错误?我应该在其他地方初始化它吗?

我的代码:

import React from 'react';
import * as firebase from 'firebase';
import "firebase/app";
import "firebase/database";

function Login() {
  var firebaseConfig = {
    ...
  };
  // Initialize Firebase
  firebase.initializeApp(firebaseConfig);
  function verify(){
    var server = firebase.database().ref('servers/' + document.getElementById("code").value);
    server.on('value', function(snapshot) {

      if(snapshot.val() && snapshot.val().exist)
      {
        console.log(snapshot.val()); 
        alert("sucsess");
      } else{
        alert("fail");
      }
    });
  }
  function checkEnter(event) {
    if(event.key === 'Enter') {
      verify(); 
    }
  }


  return (
    <div>
     ...
    </div>
  );
}

export default Login;

【问题讨论】:

  • 很难在没有上下文的情况下判断,但如果我猜您的登录组件在某个时候重新渲染并重新初始化应用程序。也许尝试将您的初始化放在componentDidMount 或类似的地方以防止重复调用?
  • 我该怎么做?
  • 您的Firebase APP好像初始化了两次。你的应用中的其他地方有firebase.initializeApp(firebaseConfig) 这样的东西吗?
  • 不。但是当我从登录回来时,我的程序中断了。它正在重新加载元素,我在其中初始化 firebase。

标签: javascript reactjs firebase


【解决方案1】:

请将firebase.initializeApp(firebaseConfig); 替换为:

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

解释和我在评论中告诉你的一样,我希望这就足够了。

【讨论】:

  • 谢谢!我工作!我会在 2 分钟内接受你的回答 :))
  • 确保一切顺利,不客气。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-06-22
  • 2016-01-01
  • 2012-02-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多