Redux DevTools иногда отключены

Я разрабатываю приложение, используя 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: я не использую пакет npm для Redux DevTools, я использую raw store, предоставленный @ ngrx / store. Раньше он работал нормально, пока я не добавил вызов.forFeature().

Пожалуйста посоветуй

1 ответ

Ааааа, поэтому решение состоит в том, чтобы инициализировать StoreDevtoolsModule в модуле MAIN (обычно это называется app.module). Если вы инициализируете его в каком-то другом модуле, который загружается позже, он будет вести себя абсурдно странным образом (см. Мой оригинальный вопрос)

Таким образом, решение было двигаться StoreDevtoolsModule.instrument({ maxAge: 25 }) из загруженного асинхронного модуля в основной модуль app.module. После этого он снова работает как шарм.

Но для меня, как для новичка в этом проекте, когда DevTools уже был настроен ранее, было совершенно не очевидно, почему он внезапно перестал работать.

Другие вопросы по тегам