📅  最后修改于: 2023-12-03 15:18:02.485000             🧑  作者: Mango
NullInjectorError: R3InjectorError(DynamicTestModule)[TaskService -> HttpClient -> HttpClient]: NullInjectorError: No provider for HttpClient!
该错误意味着程序中未提供所需的 HttpClient
提供程序。HttpClient
是 Angular 中与 HTTP 交互的核心服务。当从服务中注入 HttpClient
时,Angular 会尝试找到并提供 HttpClient
实例,但是如果没有提供它,则会出现上述错误。
常见的错误原因和解决方法:
HttpClientModule
。在应用程序的模块中,需要将 HttpClientModule
添加到 imports
列表中,以便 HttpClient
服务可以正常工作。import { HttpClientModule } from '@angular/common/http';
@NgModule({
imports: [
HttpClientModule,
// ...
],
// ...
})
export class AppModule { }
HttpClient
。在使用 HttpClient
的服务中,需要将 HttpClient
通过构造函数注入。import { HttpClient } from '@angular/common/http';
@Injectable({ providedIn: 'root' })
export class TaskService {
constructor(private http: HttpClient) {}
// ...
}
HttpClient
。在 Angular 测试中,需要使用 TestBed.configureTestingModule()
方法通过提供者为测试类提供所需的 HttpClient
实例。import { HttpClientTestingModule } from '@angular/common/http/testing';
beforeEach(() => {
TestBed.configureTestingModule({
imports: [ HttpClientTestingModule ],
// ...
})
});
// ...
处理这些常见错误的方法通常可以解决此错误。但是,如果遇到其他问题,则您可能需要检查代码以查找其他调用或配置方面的问题。