Firebase Admin SDK初始化报错:Package path ./standalone未导出
问题描述
尝试使用Firebase Admin SDK,初始化代码如下:
import * as admin from 'firebase-admin'; var firebaseAdminAccount = require("../serviceAccount.json"); var app : admin.app.App = null; if(!admin.apps.length) { app = admin.initializeApp({ credential: admin.credential.cert(firebaseAdminAccount) }) } if(app === null) { app = admin.apps[0]; } export default app;
代码逻辑:每次调用时检查Firebase Admin SDK是否已初始化,未初始化则完成初始化并导出实例。
运行时出现以下错误:
error -
./node_modules/firebase-admin/lib/app/firebase-namespace.js:106:0
Module not found: Package path ./standalone is not exported from
package D:\NewRepos\1d3a\node_modules@firebase\database-compat (see
exports field in
D:\NewRepos\1d3a\node_modules@firebase\database-compat\package.json)Import trace for requested module:
./node_modules/firebase-admin/lib/default-namespace.js
./node_modules/firebase-admin/lib/index.js ./lib/firebaseAdminSdk.ts
./middleware.ts
已完成所有依赖安装,使用的是最新版本,请问问题原因是什么?
问题原因及解决方案
原因
这个错误本质是Firebase Admin SDK与依赖的@firebase/database-compat包版本不匹配,可能由以下情况导致:
- 包管理器(npm/yarn)解析依赖时出现版本冲突,拉取了不兼容的
@firebase/database-compat版本 - 最新版本的Firebase Admin SDK存在兼容性bug,和部分依赖包的导出结构不匹配
解决方案
清理并重新安装依赖
- 删除
node_modules文件夹和包锁文件(package-lock.json或yarn.lock) - 清除包管理器缓存:
npm cache clean --force # 若使用yarn则执行:yarn cache clean - 重新安装依赖:
npm install # 或 yarn install
- 删除
指定稳定版本的Firebase Admin SDK
若最新版本存在兼容性问题,尝试安装已知稳定的版本:npm install firebase-admin@11.11.0检查是否同时引入客户端SDK
若项目中同时使用了客户端Firebase SDK(firebase包)和Admin SDK,可能会导致依赖冲突,建议确认二者版本是否兼容,或调整引入方式。
内容的提问来源于stack exchange,提问作者ArchyInUse

