错误:商店没有提供者!在@ngrx 4.x
Posted
技术标签:
【中文标题】错误:商店没有提供者!在@ngrx 4.x【英文标题】:Error: No Provider for Store! in @ngrx 4.x 【发布时间】:2018-04-19 02:32:53 【问题描述】:在将我的项目从 @ngrx 2.x 迁移到 4.1.0 时,我遇到了错误消息
NullInjectorError: 没有 Store 提供者!
店铺导入如docs:
import StoreModule as NgRxStoreModule from '@ngrx/store';
@NgModule(
imports: [
NgRxStoreModule.forRoot(reducerMap,
initialState: initial
),
StoreRouterConnectingModule,
EffectsModule.forRoot(effects)
],
providers: [AppActions]
)
export class StoreModule
【问题讨论】:
【参考方案1】:原来我的一些服务通过
导入了商店import Store from '@ngrx/store/src/store'
将导入更改为
import Store from '@ngrx/store'
解决了问题。
【讨论】:
自动导入:@ 我在 Web Storm 中添加“@ngrx/store/store”时遇到了类似的自动导入问题【参考方案2】:我在尝试以 Angular 7 运行测试时得到了这个。
我的解决方案是:
-
在
describe
的正文中定义一个 store mock:
let storeMock;
-
在
beforeEach
部分初始化它:
beforeEach(async () =>
storeMock =
dispatch: jasmine.createSpy("dispatch"),
pipe: jasmine.createSpy("pipe").and.returnValue(from([
...
requestTimeout: 5000,
...
]))
;
-
在
TestBed.configureTestingModule
中定义Store 的提供者:
TestBed.configureTestingModule(
imports: [
HttpClientTestingModule,
],
providers: [
...
provide: Store,
useValue: storeMock
...
]
);
```
【讨论】:
【参考方案3】:对于 ngrx 8 使用:
import provideMockStore from '@ngrx/store/testing';
【讨论】:
以上是关于错误:商店没有提供者!在@ngrx 4.x的主要内容,如果未能解决你的问题,请参考以下文章
Ngrx 商店收到错误,因为类型上不存在属性“ofType”