Ionic5+Angular集成Firebase报错:导出项缺失问题求助
我正在迁移更新旧的Ionic Angular应用,将Angular从12升级到13、Firebase从8.3.1升级到8.10.1后,持续遇到以下无法解决的错误:
[ng] ./node_modules/@firebase/auth-compat/node_modules/@firebase/auth/dist/esm2017/index-e3d5d3f4.js:13761:2-20 - Error: export '_registerComponent' (imported as '_registerComponent') was not found in '@firebase/app' (possible exports: default, firebase) [ng] [ng] ./node_modules/@firebase/auth-compat/node_modules/@firebase/auth/dist/esm2017/index-e3d5d3f4.js:13821:2-20 - Error: export '_registerComponent' (imported as '_registerComponent') was not found in '@firebase/app' (possible exports: default, firebase) [ng] [ng] ./node_modules/@firebase/auth-compat/node_modules/@firebase/auth/dist/esm2017/index-e3d5d3f4.js:13835:2-17 - Error: export 'registerVersion' (imported as 'registerVersion') was not found in '@firebase/app' (possible exports: default, firebase) [ng] [ng] ./node_modules/@firebase/auth-compat/node_modules/@firebase/auth/dist/esm2017/index-e3d5d3f4.js:13837:2-17 - Error: export 'registerVersion' (imported as 'registerVersion') was not found in '@firebase/app' (possible exports: default, firebase) [ng] [ng] ./node_modules/@firebase/auth-compat/node_modules/@firebase/auth/dist/esm2017/index-e3d5d3f4.js:13900:23-29 - Error: export 'getApp' (imported as 'getApp') was not found in '@firebase/app' (possible exports: default, firebase) [ng] [ng] ./node_modules/@firebase/auth-compat/node_modules/@firebase/auth/dist/esm2017/index-e3d5d3f4.js:13901:19-31 - Error: export '_getProvider' (imported as '_getProvider') was not found in '@firebase/app' (possible exports: default, firebase)
我的ionic info输出如下:
Ionic: Ionic CLI : 7.1.1 (/Users/username/.nvm/versions/node/v20.2.0/lib/node_modules/@ionic/cli) Ionic Framework : @ionic/angular 5.9.4 @angular-devkit/build-angular : 13.3.11 @angular-devkit/schematics : 13.3.11 @angular/cli : 13.3.11 @ionic/angular-toolkit : 6.1.0 Capacitor: Capacitor CLI : 5.5.1 @capacitor/android : 5.5.1 @capacitor/core : 5.5.1 @capacitor/ios : 5.5.1 Cordova: Cordova CLI : 12.0.0 (cordova-lib@12.0.1) Cordova Platforms : android 9.1.0, browser 6.0.0, ios 6.2.0 Cordova Plugins : cordova-plugin-ionic-webview 4.2.1, (and 3 other plugins) Utility: cordova-res : 0.15.4 native-run (update available: 2.0.0) : 1.7.4 System: ios-sim : 8.0.2 NodeJS : v20.2.0 (/Users/username/.nvm/versions/node/v20.2.0/bin/node) npm : 9.6.6 OS : macOS Unknown Xcode : Xcode 15.0.1 Build version 15A507
搜索后未找到相关解决方案,恳请提供思路或指引以解决该问题。
这类错误通常由Firebase包版本不兼容、依赖缓存冲突或安装不完整导致,可按以下步骤排查:
清理依赖缓存并重新安装
- 删除项目根目录下的
node_modules文件夹 - 删除
package-lock.json文件 - 执行
npm install重新安装所有依赖 - 运行
npm cache clean --force清理npm缓存(适用于存在安装残留的情况)
- 删除项目根目录下的
统一Firebase相关包版本
检查package.json中所有Firebase相关依赖(如@firebase/app、@firebase/auth、@firebase/auth-compat等),确保版本完全一致。当前升级到了Firebase 8.10.1,需保证所有Firebase子包均为该版本,避免嵌套依赖版本不一致。排查第三方插件冲突
临时移除非必要的Cordova插件,验证是否是插件与升级后的Firebase/Angular版本不兼容导致的问题,排查出冲突插件后可尝试升级该插件版本或寻找替代方案。升级Ionic Framework适配版本
当前使用的Ionic Framework 5.9.4虽与Angular 13兼容,但可尝试升级到Ionic Angular 5.x的最新版本,修复可能存在的依赖适配问题,执行命令:npm install @ionic/angular@latest规范Firebase导入方式
确认项目中Firebase的导入符合v8.x规范,避免混用compat模式和非compat模式的导入。例如使用compat模式时,需从@firebase/auth-compat导入,而非@firebase/auth。
内容的提问来源于stack exchange,提问作者Sanjay Tibrewal

