簡體   English   中英

在我的Angular項目上升級到ngrx v8后,如何修復“NullInjectorError:沒有ProviderToken @ ngrx /路由器存儲配置的提供商!”?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM