Как исправить ошибку «NullInjectorError: Нет поставщика для настройки InjectionToken @ ngrx / router-store!» после обновления до ngrx v8 в моем проекте Angular? - PullRequest
3 голосов
/ 13 июня 2019

Я только что обновил проект с 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)

Ответы [ 2 ]

5 голосов
/ 13 июня 2019

После небольшого поиска в Google (не найдя прямого ответа) я перечитал руководство по обновлению ngrx , и у него был этот самородок:

Использование forRoot теперьтребуется для StoreRouterConnectingModule

ДО:

@NgModule({
  imports: [
    StoreRouterConnectingModule
  ]
})
export class AppModule {}

ПОСЛЕ

@NgModule({
  imports: [
    StoreRouterConnectingModule.forRoot() // <-- gotta do this
  ]
})
export class AppModule {}

Я исправил это в своем AppModule, и это помогло!

Примечание для себя: в следующий раз прочитайте все части руководства по миграции.

0 голосов
/ 13 июня 2019

@ Решение Натана Бедфорда сработало.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...