Angular项目配置Auth、Firestore等遇AssertionError错误求助
解决Angular CLI添加Firebase服务时的"catch clause variable is not an Error instance"错误
问题分析
在执行ng add命令配置Firebase身份验证、Firestore或云存储时触发的这个错误,是因为Angular CLI内部的assertIsError函数接收到了不符合预期的错误对象——它既不是标准的Error实例,也不具备RxJS错误要求的name和message属性,导致断言失败。
可行解决方案
清理缓存并重装依赖
- 清空Angular CLI缓存:
ng cache clean --all - 删除项目中的依赖文件并重新安装:
rm -rf node_modules package-lock.json npm install
降级Angular CLI到稳定版本
若更新依赖后问题仍存在,可能是最新CLI版本的兼容性bug,尝试降级到与项目Angular版本匹配的稳定版(比如16.x或17.x):
# 全局降级CLI npm install -g @angular/cli@17.3.0 # 项目本地安装对应版本 npm install @angular/cli@17.3.0 --save-dev
手动配置Firebase服务
绕开ng add的schematics流程,直接手动集成:
- 安装Firebase依赖包:
npm install firebase @angular/fire - 在
app.module.ts中导入并配置Firebase模块:import { NgModule } from '@angular/core'; import { BrowserModule } from '@angular/platform-browser'; import { provideFirebaseApp, initializeApp } from '@angular/fire/app'; import { getAuth, provideAuth } from '@angular/fire/auth'; import { getFirestore, provideFirestore } from '@angular/fire/firestore'; import { getStorage, provideStorage } from '@angular/fire/storage'; import { environment } from '../environments/environment'; @NgModule({ imports: [BrowserModule], providers: [ provideFirebaseApp(() => initializeApp(environment.firebase)), provideAuth(() => getAuth()), provideFirestore(() => getFirestore()), provideStorage(() => getStorage()), ], bootstrap: [AppComponent] }) export class AppModule { } - 在
environment.ts中填入从Firebase控制台获取的项目配置:export const environment = { production: false, firebase: { apiKey: "YOUR_API_KEY", authDomain: "YOUR_AUTH_DOMAIN", projectId: "YOUR_PROJECT_ID", storageBucket: "YOUR_STORAGE_BUCKET", messagingSenderId: "YOUR_SENDER_ID", appId: "YOUR_APP_ID" } };
检查Node.js版本兼容性
确保使用的Node.js版本为LTS版(比如18.x或20.x),与Angular CLI和项目依赖兼容,可通过nvm快速切换版本:
nvm install 20 nvm use 20
内容的提问来源于stack exchange,提问作者Sean Emmanuel Tolentino
相关产品推荐
相关产品推荐

