You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

导入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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 06:52:45