Redux DevTools有时会被禁用

时间:2018-02-27 11:45:46

标签: javascript redux ngrx ngrx-store redux-devtools-extension

我正在使用Angular 5 + NgRx开发应用程序。我安装了浏览器扩展Redux DevTools(适用于Chrome和Firefox)。但是这两个扩展都被禁用(图标为灰色且不显示商店历史记录)

我的应用程序有几个模块,它们是异步加载的。 主app.module.ts包含此代码

StoreModule.forRoot({
 user: userReducer
})

,另一个模块有这个

StoreModule.forFeature('dashboard', dashboardReducer),
StoreModule.forFeature('globalSettings', globalSettingsReducer),
StoreModule.forFeature('userInfo', userSettingsReducer),

结果是Redux DevTools扩展被禁用。控制台中未报告任何相关错误。我究竟做错了什么?我无法让它工作,我感到沮丧。

当我将其更改为此(显然是错误的)代码时,有趣的是DevTools再次开始工作,但其他事情已经破坏(如预期的那样)

StoreModule.forRoot({
 'dashboard': dashboardReducer,
 'globalSettings': globalSettingsReducer,
 'userInfo': userSettingsReducer
}), 

我确实需要使用DevTools,因为它可以帮助我更好地/可视化应用程序的当前状态。也没有Redux DevTools和时间调试,整个Redux方法在我看来就像写了太多的样板。当工具生态系统工作时,它很棒,但是当它破裂时,我所拥有的就是更多样板代码(减速器,动作等)。

为什么Redux DevTools不会启动? 为什么不向控制台报告任何错误? 如何让它再次运作?

PS:我没有使用Redux DevTools的npm包,我正在使用@ ngrx / store提供的原始商店。它曾经工作正常,直到我添加了.forFeature()调用。

请咨询

1 个答案:

答案 0 :(得分:0)

Aaaah,所以解决方案是在MAIN模块中初始化StoreDevtoolsModule(通常称为app.module)。如果你在稍后加载的其他模块中初始化它,那么它将以荒谬的奇怪方式运行(参见我原来的问题)

所以解决方案是将StoreDevtoolsModule.instrument({ maxAge: 25 })从异步加载的模块移动到主app.module。之后它又像魅力一样。

但是对我来说,作为这个项目的新手,当DevTools之前已经设置完毕时,它完全不明显,为什么突然停止工作。