错误:没有商店提供商!在@ngrx 4.x中

时间:2017-11-06 20:30:24

标签: angular ngrx ngrx-store ngrx-store-4.0

将我的项目从@ngrx 2.x迁移到4.1.0时,我遇到了错误消息

  

NullInjectorError:没有商店提供商!

商店已导入,如docs

所示
import { StoreModule as NgRxStoreModule } from '@ngrx/store';

@NgModule({
  imports: [
    NgRxStoreModule.forRoot(reducerMap, {
      initialState: initial
    }),
    StoreRouterConnectingModule,
    EffectsModule.forRoot(effects)
  ],
  providers: [AppActions]
})
export class StoreModule {}

3 个答案:

答案 0 :(得分:9)

原来我的一些服务是通过

导入商店的
import { Store } from '@ngrx/store/src/store'

将导入更改为

import { Store } from '@ngrx/store'

修复了问题。

答案 1 :(得分:0)

当我尝试在角度7中运行测试时得到了这个。

对我来说,解决方案是:

  1. describe的正文中定义商店模拟:
let storeMock;
  1. beforeEach部分中对其进行初始化:
  beforeEach(async () => {
    storeMock = {
      dispatch: jasmine.createSpy("dispatch"),
      pipe: jasmine.createSpy("pipe").and.returnValue(from([{
...
        requestTimeout: 5000,
...
      }]))
    };
  1. TestBed.configureTestingModule中的商店定义提供商:
    TestBed.configureTestingModule({
      imports: [
        HttpClientTestingModule,
      ],
      providers: [
        ...
        {
          provide: Store,
          useValue: storeMock
        }
        ...
      ]
    });
    ```

答案 2 :(得分:0)

对于ngrx 8,使用:

import { provideMockStore } from '@ngrx/store/testing';