如何在firebase版本9(firebase v9)中初始化firebase?

10 浏览
0 Comments

如何在firebase版本9(firebase v9)中初始化firebase?

我过去使用以下方法初始化我的Firebase应用程序:\n

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);
    }
}

\n我正在升级我的Firebase版本到9,并且我需要一种使用ES模块初始化我的应用程序的方法。\n我尝试了以下代码:\n

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();
}

\n但是我遇到了以下错误:\nFirebaseError: Firebase:未创建Firebase App \'[DEFAULT]\' - 请调用Firebase App.initializeApp()(app-compat/no-app)。\n\"enter

0
0 Comments

问题的原因:在firebase版本9中,initializeApp函数的导入方式发生了变化,需要使用import { initializeApp } from "firebase/app";来导入。因此,原来的使用方式无法在新版本中正常工作。

解决方法:使用新的导入方式来初始化firebase,即import { initializeApp } from "firebase/app";。将原来的代码替换为新的导入方式,并确保所有的参数都正确设置。

如何在firebase版本9(firebase v9)中初始化firebase?

为什么不直接使用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);

你真的需要自定义的initFirebase()函数吗?

我需要在某个地方导入app变量来初始化firebase吗,还是可以保持原样?

我相信你不需要在任何地方导入app。在同一个文件中,你可以初始化auth、firestore和其他firebase服务 - 这通常是你需要在某个地方导入的。

为什么将API密钥放在NEXT_PUBLIC中是安全的?这些变量不会被暴露给最终用户吗?

0