复刻NgRx文档AuthEffect时遇HttpHandler无提供者错误求助
解决NgRx Effect中的HttpClient依赖错误
你碰到的这个NullInjectorError: No provider for HttpHandler!问题,根源在于你错误地直接在providers数组里注册了HttpClient。Angular的HttpClient并不是一个可以单独提供的服务,它依赖HttpHandler等一系列底层服务,这些服务都是由HttpClientModule统一提供的,手动注册HttpClient只会导致依赖缺失。
修复步骤:
- 移除手动注册的HttpClient:在你的
AppModule的providers数组里删掉HttpClient这一项 - 导入HttpClientModule:在
AppModule的imports数组中添加HttpClientModule
修改后的AppModule代码如下:
@NgModule({ declarations: [ AppComponent, ], imports: [ BrowserModule, BrowserAnimationsModule, HttpClientModule, // 新增这一行 StoreModule.forRoot(rootReducer), StoreDevtoolsModule.instrument({ maxAge: 10 }), EffectsModule.forRoot([HttpEffects]) ], exports: [ BrowserAnimationsModule ], providers: [], // 这里移除了HttpClient bootstrap: [AppComponent] }) export class AppModule { }
额外说明:
- 你的
HttpEffects代码本身没有问题,只要Angular能正确注入HttpClient,这个Effect就能正常工作。 - 如果是在Feature模块中使用
HttpClient,不需要重复导入HttpClientModule(因为AppModule已经导入,根模块的imports会被整个应用共享),只要确保Feature模块能访问到HttpClient即可。 - 如果你之前尝试用
EffectsModule.forFeature()导入Effect,只要HttpClientModule已经在根模块或当前Feature模块导入,这个错误也会被解决。
内容的提问来源于stack exchange,提问作者NbonD
相关产品推荐
相关产品推荐

