如何使用模块化Firebase v9完成firebase admin初始化?
解决方案
首先确认你使用的是 firebase-admin@11 及以上版本,低于该版本的Admin SDK不支持模块化导入能力。
重构后代码
// 仅导入需要的核心初始化方法 import { initializeApp, getApps, cert } from "firebase-admin/app"; // 按需导入用到的服务,不需要的服务不会被打包 import { getFirestore } from "firebase-admin/firestore"; import { getAuth } from "firebase-admin/auth"; if (!getApps().length) { const adminCredentials = { credential: cert({ projectId: env.fbProjIdPublic, clientEmail: env.fbClientEmail, privateKey: JSON.parse(env.fbPvtKey), }), databaseURL: env.fbDbUrlPublic, }; initializeApp(adminCredentials); } // 按需导出用到的服务实例即可,无需导出整个admin对象 export const db = getFirestore(); export const auth = getAuth();
关键说明
- 你要找的
firebaseAdmin.credential.cert替代方法就是从firebase-admin/app包导出的cert方法,和客户端SDK的导入路径不同。 - 不要默认导出整个firebaseAdmin对象,按需导出用到的服务即可,才能真正实现tree-shaking,减少打包后的体积,优化Serverless环境的冷启动速度。
- 如果后续要用到其他Admin服务(比如存储、云消息),也可以按照相同规则从对应包导入,示例:
import { getStorage } from "firebase-admin/storage"
内容的提问来源于stack exchange,提问作者GorvGoyl
相关产品推荐
相关产品推荐

