导入AngularFireDatabase导致登录/注册异常 - Angular技术问题
解决AngularFireDatabase的NullInjectorError问题
错误原因
NullInjectorError: No provider for InjectionToken angularfire2.app.options! 是因为AngularFire未正确初始化Firebase应用配置,导致依赖注入容器无法找到必要的配置令牌,进而引发服务实例化失败,最终导致页面加载异常、路由跳转受阻。
解决方案
1. 添加Firebase项目配置
在src/environments/environment.ts中填入从Firebase控制台获取的项目配置:
export const environment = { production: false, firebase: { apiKey: "你的API_KEY", authDomain: "你的AUTH_DOMAIN", projectId: "你的PROJECT_ID", storageBucket: "你的STORAGE_BUCKET", messagingSenderId: "你的MESSAGING_SENDER_ID", appId: "你的APP_ID" } };
2. 初始化AngularFire模块
修改app.module.ts,导入并初始化AngularFire核心模块与数据库模块:
import { NgModule } from '@angular/core'; import { BrowserModule } from '@angular/platform-browser'; import { AngularFireModule } from '@angular/fire/compat'; import { AngularFireDatabaseModule } from '@angular/fire/compat/database'; import { environment } from '../environments/environment'; import { AppRoutingModule } from './app-routing.module'; import { AppComponent } from './app.component'; @NgModule({ declarations: [ AppComponent // 其他组件声明 ], imports: [ BrowserModule, AppRoutingModule, AngularFireModule.initializeApp(environment.firebase), AngularFireDatabaseModule ], providers: [], bootstrap: [AppComponent] }) export class AppModule { }
3. 确保服务正确注册
更新sidebar.service.ts,使用providedIn: 'root'自动注册为根服务(Angular 6+推荐方式):
import { Injectable } from '@angular/core'; import { AngularFireDatabase } from '@angular/fire/compat/database'; import { Observable } from 'rxjs'; @Injectable({ providedIn: 'root' }) export class SidebarService { constructor(private db: AngularFireDatabase) {} getUsers(): Observable<any[]> { return this.db.list('/users').valueChanges(); } }
4. 修复路由跳转逻辑
确保登录/注册成功后再执行路由跳转,避免错误中断导航:
// 示例登录组件跳转逻辑 login(credentials: any) { this.authService.login(credentials).subscribe(() => { this.router.navigate(['/dashboard']); }, error => { console.error('登录失败:', error); }); }
完成以上配置后,AngularFire可正确获取Firebase配置,依赖注入恢复正常,页面加载与路由跳转功能会回到预期状态。
内容的提问来源于stack exchange,提问作者Mohamed Seif Ben Salah
相关产品推荐
相关产品推荐

