[英]How do I fix “ NullInjectorError: No provider for InjectionToken @ngrx/router-store Configuration!” after upgrading to ngrx v8 on my Angular project?
我剛剛將一個項目從Angular 6(和ngrx 6)升級到Angular 8.我嘗試遵循Angular 8的遷移指南,並且能夠構建所有內容,但最終在運行時出現此錯誤:
完整的錯誤消息:
Unhandled Promise rejection: StaticInjectorError(AppModule)[StoreRouterConnectingModule -> InjectionToken @ngrx/router-store Configuration]:
StaticInjectorError(Platform: core)[StoreRouterConnectingModule -> InjectionToken @ngrx/router-store Configuration]:
NullInjectorError: No provider for InjectionToken @ngrx/router-store Configuration! ; Zone: <root> ; Task: Promise.then ; Value: NullInjectorError: StaticInjectorError(AppModule)[StoreRouterConnectingModule -> InjectionToken @ngrx/router-store Configuration]:
StaticInjectorError(Platform: core)[StoreRouterConnectingModule -> InjectionToken @ngrx/router-store Configuration]:
NullInjectorError: No provider for InjectionToken @ngrx/router-store Configuration!
at NullInjector.push../node_modules/@angular/core/fesm5/core.js.NullInjector.get (http://localhost:4200/vendor.js:44694:25)
at resolveToken (http://localhost:4200/vendor.js:44932:24)
at tryResolveToken (http://localhost:4200/vendor.js:44876:16)
at StaticInjector.push../node_modules/@angular/core/fesm5/core.js.StaticInjector.get (http://localhost:4200/vendor.js:44780:20)
at resolveToken (http://localhost:4200/vendor.js:44932:24)
at tryResolveToken (http://localhost:4200/vendor.js:44876:16)
at StaticInjector.push../node_modules/@angular/core/fesm5/core.js.StaticInjector.get (http://localhost:4200/vendor.js:44780:20)
at resolveNgModuleDep (http://localhost:4200/vendor.js:61915:29)
at _createClass (http://localhost:4200/vendor.js:61968:32)
at _createProviderInstance (http://localhost:4200/vendor.js:61932:26) NullInjectorError: StaticInjectorError(AppModule)[StoreRouterConnectingModule -> InjectionToken @ngrx/router-store Configuration]:
StaticInjectorError(Platform: core)[StoreRouterConnectingModule -> InjectionToken @ngrx/router-store Configuration]:
NullInjectorError: No provider for InjectionToken @ngrx/router-store Configuration!
at NullInjector.push../node_modules/@angular/core/fesm5/core.js.NullInjector.get (http://localhost:4200/vendor.js:44694:25)
at resolveToken (http://localhost:4200/vendor.js:44932:24)
at tryResolveToken (http://localhost:4200/vendor.js:44876:16)
at StaticInjector.push../node_modules/@angular/core/fesm5/core.js.StaticInjector.get (http://localhost:4200/vendor.js:44780:20)
at resolveToken (http://localhost:4200/vendor.js:44932:24)
at tryResolveToken (http://localhost:4200/vendor.js:44876:16)
at StaticInjector.push../node_modules/@angular/core/fesm5/core.js.StaticInjector.get (http://localhost:4200/vendor.js:44780:20)
at resolveNgModuleDep (http://localhost:4200/vendor.js:61915:29)
at _createClass (http://localhost:4200/vendor.js:61968:32)
at _createProviderInstance (http://localhost:4200/vendor.js:61932:26)
經過一段谷歌搜索(沒有找到直接答案)后,我重新閱讀了ngrx 升級指南 ,它有這個金塊:
現在,StoreRouterConnectingModule需要使用forRoot
之前:
@NgModule({
imports: [
StoreRouterConnectingModule
]
})
export class AppModule {}
后
@NgModule({
imports: [
StoreRouterConnectingModule.forRoot() // <-- gotta do this
]
})
export class AppModule {}
我在我的AppModule中修復了這個問題,這就行了!
自我注意:下次閱讀遷移指南的所有部分。
@Nathan Bedford解決方案有效。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.