Angular导入AngularFireAuth至AppModule报错,求解决方案
Firebase认证Auth Guard报错解决指南
我太懂这种卡壳的憋屈感了!折腾Firebase认证加Auth Guard路由控制的时候碰到这个报错,确实挺闹心的。先给你梳理下问题和解决办法:
问题背景
我尝试在服务中实现Firebase认证,用Auth Guard做路由权限控制,结果抛出了这个错误:
错误信息:
Uncaught Error: Unexpected value 'AngularFireAuth' imported by the module 'AppModule'. Please add a @NgModule annotation
我的Auth Guard代码片段如下:
import { Injectable } from '@angular/core'; import { AngularFireAuth } from 'angularfire2/auth'; import { CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot, Router } from '@angular/router'; import { AuthService } from './auth.service'; import { Observable } from 'rxjs'; @Injectable({ providedIn: 'root' }) export class AuthGuard implements CanActivate { constructor( private afAuth: AngularFireAuth, private router: Router, private authService: AuthService ) {} canActivate( route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree { // 你的路由守卫逻辑 } }
问题原因&解决办法
这个错误的核心原因很直白:你把AngularFireAuth(这是个服务类)当成模块导入到了AppModule的imports数组里,但imports数组只能接受带有@NgModule装饰器的模块类。
正确的操作步骤是:
- 在
AppModule中导入AngularFireAuthModule(这才是对应的模块),而不是直接导入AngularFireAuth AngularFireAuth作为服务,只需要在需要使用的地方(比如你的Auth Guard、Auth Service)通过依赖注入调用即可,不需要在模块的imports里声明
修改你的AppModule代码:
import { NgModule } from '@angular/core'; import { BrowserModule } from '@angular/platform-browser'; import { AngularFireModule } from 'angularfire2'; import { AngularFireAuthModule } from 'angularfire2/auth'; // 导入正确的模块 import { AppRoutingModule } from './app-routing.module'; import { AppComponent } from './app.component'; // Firebase配置 const firebaseConfig = { // 你的Firebase配置信息 }; @NgModule({ declarations: [ AppComponent ], imports: [ BrowserModule, AppRoutingModule, AngularFireModule.initializeApp(firebaseConfig), // 初始化Firebase AngularFireAuthModule // 这里放的是模块,不是服务类 ], providers: [], bootstrap: [AppComponent] }) export class AppModule { }
这样修改后,Angular就能正确识别并提供AngularFireAuth服务,你的Auth Guard也能正常使用它来做认证校验了。
内容的提问来源于stack exchange,提问作者Aleksa Camilovic
相关产品推荐
相关产品推荐

