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

Angular 18升级至19后出现NG0203环境注入器错误求助

解决Angular 19 + AngularFire 19的NG0203注入错误

问题原因

AngularFire 19适配Angular 19的新注入系统,旧的AngularFireModule.initializeApp在NgModule imports中的初始化方式,会导致inject()函数在非注入上下文被调用,触发NG0203错误。

解决步骤

1. 替换NgModule中的Firebase初始化方式

移除@NgModule imports数组中的AngularFireModule.initializeApp(firebaseConfig)和AngularFirestoreModule,改用AngularFire提供的提供者函数配置:

import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
// 导入新的Firebase提供者函数
import { provideFirebaseApp, initializeApp } from '@angular/fire/app';
import { provideFirestore, getFirestore } from '@angular/fire/firestore';

import { AppComponent } from './app.component';

@NgModule({
  declarations: [AppComponent],
  imports: [BrowserModule],
  providers: [
    // 初始化Firebase应用
    provideFirebaseApp(() => initializeApp(firebaseConfig)),
    // 配置Firestore服务
    provideFirestore(() => getFirestore())
  ],
  bootstrap: [AppComponent]
})
export class AppModule { }

2. 验证RepositoryService的注入逻辑

你的RepositoryService构造器注入写法本身没问题,若需适配新API,可直接注入Firestore类替代旧的AngularFirestore:

import { Injectable } from '@angular/core';
import { Firestore, collection, addDoc } from '@angular/fire/firestore';

@Injectable({
  providedIn: 'root',
})
export class RepositoryService {
  constructor(private firestore: Firestore) { }

  // 示例:Firestore文档添加逻辑
  async addDocument(collectionName: string, data: any) {
    const colRef = collection(this.firestore, collectionName);
    return await addDoc(colRef, data);
  }
}

3. 清理项目依赖与缓存

执行以下命令确保依赖和构建缓存正确:

rm -rf node_modules package-lock.json
npm install
ng build --clean

关键说明

Angular 19对注入上下文的检查更严格,AngularFire 19优先推荐基于提供者函数的配置方式,替代旧的NgModule导入初始化,确保所有依赖注入都在合法上下文执行。

内容的提问来源于stack exchange,提问作者Geometry

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 19:15:05