user3399180
user3399180

Reputation: 572

How to initialize firebase in firebase version 9 (firebase v9)?

I used to initialize my firebase app using this method -

import firebase from "firebase/app";
import "firebase/auth";

const config = {
    apiKey: process.env.NEXT_PUBLIC_FIREBASE_PUBLIC_API_KEY,
    authDomain: process.env.NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN,
    databaseURL: process.env.NEXT_PUBLIC_FIREBASE_DATABASE_URL,
    projectId: process.env.NEXT_PUBLIC_FIREBASE_PROJECT_ID,
};

export default function initFirebase() {
    if (!firebase.apps.length) {
        firebase.initializeApp(config);
    }
}

I am upgrading my firebase version to 9 and I need a way to initialize my app using es modules.

I tried this -

import { initializeApp, getApps, getApp } from "firebase/app";

const config = {
    apiKey: process.env.NEXT_PUBLIC_FIREBASE_PUBLIC_API_KEY,
    authDomain: process.env.NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN,
    databaseURL: process.env.NEXT_PUBLIC_FIREBASE_DATABASE_URL,
    projectId: process.env.NEXT_PUBLIC_FIREBASE_PROJECT_ID,
};

export default function initFirebase() {
    getApps().length === 0 ? initializeApp(config) : getApp();
}

But I am getting this error -

FirebaseError: Firebase: No Firebase App '[DEFAULT]' has been created - call Firebase App.initializeApp() (app-compat/no-app).

enter image description here

Upvotes: 2

Views: 3134

Answers (1)

Łukasz Ciesielski
Łukasz Ciesielski

Reputation: 104

Why don't you simply use initializeApp?

import { initializeApp } from "firebase/app";

const config = {
    apiKey: process.env.NEXT_PUBLIC_FIREBASE_PUBLIC_API_KEY,
    authDomain: process.env.NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN,
    databaseURL: process.env.NEXT_PUBLIC_FIREBASE_DATABASE_URL,
    projectId: process.env.NEXT_PUBLIC_FIREBASE_PROJECT_ID,
};

export const app = initializeApp(config);

Do you really need your custom initFirebase() function?

Upvotes: 1

Related Questions