运行npm start启动Firebase项目报ERR_PACKAGE_PATH_NOT_EXPORTED错误怎么解决
错误根因
Firebase v9.0及以上版本调整了包导出规则,默认仅支持ESM模块化导入,不再支持CommonJS规范下直接引入整包firebase的写法,所以你用require('firebase')时会触发ERR_PACKAGE_PATH_NOT_EXPORTED入口未定义错误。
修复方案
你可以根据自己的项目情况选任意一种方案:
- 方案1:适配v9模块化规范修改引入代码,无需降级版本
取消整包引入的写法,按需引入你需要用到的子模块即可,示例代码如下:
后续增删改查操作直接使用上面导入的方法即可,无需再通过// 引入基础 app 模块 const { initializeApp } = require('firebase/app'); // 按需引入对应功能模块,以Firestore数据库为例 const { getFirestore, collection, addDoc, deleteDoc, doc, updateDoc, getDocs } = require('firebase/firestore'); // 替换原有初始化逻辑 const firebaseConfig = { // 你的firebase配置项 }; const app = initializeApp(firebaseConfig); const db = getFirestore(app);firebase.xxx的方式调用。 - 方案2:降级Firebase到v8版本,兼容原有老写法
如果你不想修改现有代码逻辑,直接运行下面的命令降级到支持整包CommonJS引入的v8最终稳定版即可:
降级完成后原有npm install firebase@8.10.0const firebase = require('firebase')的代码无需修改即可正常运行。 - 方案3:切换项目为ESM模块规范
如果你的项目可以适配ESM,在项目根目录的package.json中新增配置项"type": "module",然后将引入写法改为ESM标准的import语法:import firebase from 'firebase/compat/app'; // 对应功能引入 import 'firebase/compat/firestore';
内容的提问来源于stack exchange,提问作者Titus Cox
相关产品推荐
相关产品推荐

