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 уже был настроен ранее, было совершенно не очевидно, почему он внезапно перестал работать.