Next.js: 名为“[DEFAULT]”的 Firebase 应用已存在(应用/重复应用)

创建于 2017-05-17  ·  10评论  ·  资料来源: vercel/next.js

我开始了一个基于https://github.com/zeit/next.js/tree/v3-beta/examples/with-firebase的项目

在多个组件中导入 firebase 时出现的错误。

在这个 firebase 启动文件中:

`从'firebase'导入firebase

const firebaseConfig = {
apiKey: "fdsfsdfdsf",
authDomain: "fdsfdsfsdfdsf",
数据库URL: "sdfdsfdsf",
projectId: "dsfdsfdsf",
存储桶:“dsfdsfdsf”,
messagesSenderId: "dsfdsfsdfdsf"
}

const FbApp = firebase.initializeApp(firebaseConfig)

导出默认的 FbApp.auth()`

然后在组件中:

import firebase from '../lib/firebaseClient'

使用单个组件效果很好,但如果我添加一个带有import firebase from '../lib/firebaseClient'的新组件,应用程序将失败:

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

最有用的评论

您可以检查firebase.apps以查看它是否已加载。 如果您只加载一次,那么您只需检查长度即可。 如果您有多个,那么您可以检查每个应用程序名称。

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

http://stackoverflow.com/questions/37652328/how-to-check-if-a-firebase-app-is-already-initialized-on-android

所有10条评论

您可以检查firebase.apps以查看它是否已加载。 如果您只加载一次,那么您只需检查长度即可。 如果您有多个,那么您可以检查每个应用程序名称。

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

http://stackoverflow.com/questions/37652328/how-to-check-if-a-firebase-app-is-already-initialized-on-android

解决方案:

`从'firebase'导入firebase

尝试 {
firebase.initializeApp({
数据库 URL: 'dfgdfg'
})
} 抓住(错误){
// 我们跳过“已经存在”消息
// 当我们热重载时不是一个实际的错误
if (!/已经存在/.test(err.message)) {
console.error('Firebase 初始化错误', err.stack)
}
}

const fb = 火力基地
导出默认 fb`

问题是由于多次调用 firebase 的 initialize 方法造成的。 我有同样的问题。 我可以通过多次限制初始化方法调用来修复它。 在一个类中进行 firebase 配置并将其设为单例类。

我是 firebase 的新手,也是最近的网络开发人员。 我有这个问题。 我的问题是由在我的 html 文件的头部和正文中链接我的 javascript 文件引起的。 我特别在 html 头中有 firebase 和 js 脚本标签,在 body 标签末尾有另一个 js 脚本标签。 我的解决方法是从头部删除所有脚本标签并将它们放在正文的底部。

这是我的解决方案:

// Config file
import * as firebase from "firebase";

const config = {...};

export default !firebase.apps.length ? firebase.initializeApp(config) : firebase.app();

// Other file
import firebase from '../firebase';
...
console.log(firebase.name);
console.log(firebase.database());

绝妙的解决方案! @普里

@Purii你刚刚拯救了我的一天

如果您使用 firestore,请使用:

export default !firebase.apps.length
  ? firebase.initializeApp(config).firestore()
  : firebase.app().firestore();

@jide谢谢

我还必须包括import 'firebase/firestore';

import * as firebase from 'firebase'
import 'firebase/firestore';

const config = {
  apiKey: "***",
  authDomain: "***",
  databaseURL: "***",
  projectId: "***",
  storageBucket: "***",
  messagingSenderId: "***"
};

export default !firebase.apps.length 
  ? firebase.initializeApp(config).firestore()
  : firebase.app().firestore();

@Purii@jide ,感谢您的解决方案

此页面是否有帮助?
0 / 5 - 0 等级