对于我的博客,我允许用户输入他们的电子邮件,然后将所述电子邮件添加到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不支持后端。非常感谢任何帮助。
答案 0 :(得分:1)
该错误消息表示在生成该错误的调用之前已在页面上调用firebase.initializeApp()
的内容。我们这里没有人能够了解您的整个网站,以了解是否以及如何发生这种情况,您将不得不开始挖掘您网站的组件进行调试。甚至可能在initializeApp()中设置一个调试器断点,以便在第一次调用它时进行陷阱,并检查堆栈以查看它在哪里。
如果某个其他组件正在初始化Firebase的默认实例,并且该页面是合法的,则可以通过为其指定名称来初始化非默认实例来解决此问题(传递initializeApp()的第二个参数,保持其引用,并传递它以获取数据库,身份验证,存储等的替代实例。
答案 1 :(得分:-1)
我不确定为什么它会给我duplicate-app
错误,但事实证明我忘了firebase.signInAnonymously()
。在initializeApp()
之后onAuthStateChange
之前添加该行修复了问题。我觉得自己像个傻瓜,但我想我会把答案放在这里并发布,以防其他一些同样心不在焉的人犯同样的错误。 :P