Firebase初始化会产生app / duplicate-app错误

时间:2018-01-25 01:14:29

标签: javascript firebase firebase-realtime-database

对于我的博客,我允许用户输入他们的电子邮件,然后将所述电子邮件添加到firebase数据库,这样我就可以向发帖的人发送大量电子邮件给我。我在我的机器上测试了我的代码,它运行得很好。

首先,我添加了firebase <script>标记,然后我添加了自己的脚本标记,该标记链接到顶部包含以下内容的文件:

var config = {
    apiKey: "...",
    authDomain: "...",
    databaseURL: "...",
    projectId: "...",
    storageBucket: "...",
    messagingSenderId: "..."
};

firebase.initializeApp(config);

这在我的机器上工作正常,但我将文件推送到我的博客托管的GitHub,当我运行firebase.initializeApp(config)时,它不再工作了。它给了我一个错误Firebase: Firebase App named '[DEFAULT]' already exists (app/duplicate-app)。我不确切知道如何解决这个问题。我已经尝试过给firebase.initializeApp()第二个参数,这个参数是一个随机生成的ID,保存在cookie中,但是也没有。我得到了同样的错误。

这一切都是在前端完成的,因为GitHub Pages不支持后端。非常感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

该错误消息表示在生成该错误的调用之前已在页面上调用firebase.initializeApp()的内容。我们这里没有人能够了解您的整个网站,以了解是否以及如何发生这种情况,您将不得不开始挖掘您网站的组件进行调试。甚至可能在initializeApp()中设置一个调试器断点,以便在第一次调用它时进行陷阱,并检查堆栈以查看它在哪里。

如果某个其他组件正在初始化Firebase的默认实例,并且该页面是合法的,则可以通过为其指定名称来初始化非默认实例来解决此问题(传递initializeApp()的第二个参数,保持其引用,并传递它以获取数据库,身份验证,存储等的替代实例。

答案 1 :(得分:-1)

我不确定为什么它会给我duplicate-app错误,但事实证明我忘了firebase.signInAnonymously()。在initializeApp()之后onAuthStateChange之前添加该行修复了问题。我觉得自己像个傻瓜,但我想我会把答案放在这里并发布,以防其他一些同样心不在焉的人犯同样的错误。 :P