Angular 6集成Firebase遇TS2305错误:模块无对应导出成员求助
错误含义与解决方案
首先,这些错误的核心原因是版本不兼容:
你当前安装的angularfire2和firebase版本与你的Angular 6项目不匹配。当你直接执行npm install firebase angularfire2 --save时,npm会默认拉取这两个包的最新版本,但最新版本的firebase已经重构了API导出结构(比如原本从firebase/app导出的User、auth、app等成员,现在需要从对应的子模块如firebase/auth、firebase/database导入),而适配Angular 6的旧版angularfire2仍然期望使用旧的firebase导出结构,所以就出现了这些"找不到导出成员"的错误。
而你的全新Angular项目能正常运行,是因为新创建的项目大概率使用了较新的Angular版本(比如Angular 10及以上),这些版本能够兼容最新的firebase和angularfire2包,版本匹配自然不会报错。
解决步骤:
- 先卸载当前不兼容的包:
npm uninstall firebase angularfire2 --save
- 安装与Angular 6兼容的特定版本组合:
npm install firebase@5.5.9 angularfire2@5.1.1 --save
这个版本组合经过验证,能够完美适配Angular 6项目。
- 确认你的
app.module.ts中的导入方式与该版本匹配(示例):
import { NgModule } from '@angular/core'; import { AngularFireModule } from 'angularfire2'; import { AngularFireAuthModule } from 'angularfire2/auth'; import { AngularFireDatabaseModule } from 'angularfire2/database'; // 替换为你的Firebase项目配置 const firebaseConfig = { apiKey: "YOUR_API_KEY", authDomain: "YOUR_AUTH_DOMAIN", databaseURL: "YOUR_DATABASE_URL", projectId: "YOUR_PROJECT_ID", storageBucket: "YOUR_STORAGE_BUCKET", messagingSenderId: "YOUR_MESSAGING_SENDER_ID" }; @NgModule({ imports: [ AngularFireModule.initializeApp(firebaseConfig), AngularFireAuthModule, AngularFireDatabaseModule // 根据需求添加其他AngularFire模块 ] }) export class AppModule { }
完成以上步骤后,重新执行ng serve应该就能正常运行了。
内容的提问来源于stack exchange,提问作者Arash
相关产品推荐
相关产品推荐

