Я использую Angular 7 с редуксом. Мое состояние генерируется с помощью ngrx , и, поскольку мы используем моно-репозиторий, все это управляется с помощью Nrwl .
Недавно я столкнулся с проблемой, когда мой редуктор не вызывали вообще. Все мои модульные тесты работали нормально, но когда я запустил приложение, редуктор просто никогда не вызывался, и в приложении не было сообщений об ошибках. Пройдя несколько этапов процесса исключения, я смог исправить проблему, изменив «функциональный ключ» для состояния. Т.е. я прошел путь от:
export const SEARCH_FEATURE_KEY = 'search';
до:
export const SEARCH_FEATURE_KEY = 'omnisearch';
Мне понадобилось пару часов, чтобы определить это исправление, что никогда не было забавно. После того, как я выяснил, как решить эту проблему, я провел еще несколько поисков в своей базе кода и, наконец, нашел другой модуль, который использовал функциональную клавишу search
. Естественно, это было в каком-то старом коде, который больше не использовался (и теперь удален из базы кода), и который объявил свой функциональный ключ нестандартным способом, что затрудняет мне его нахождение в коде база. В наши дни у нас намного лучшая согласованность, но (как и у многих) есть некоторый старый код, все еще лежащий в ожидании проблемы.
Очевидно, это избавило бы меня от многих проблем, если бы используемые нами привязки ngrx
имели выдал ошибку о дублировании функциональных клавиш вместо того, чтобы просто игнорировать один из редукторов. В достаточно больших приложениях подобные ошибки неизбежны, и я пытаюсь выяснить, есть ли какие-либо дальнейшие шаги, которые я могу предпринять (кроме изменения соглашений об именах), чтобы ускорить отладку подобных ошибок в будущем. Есть ли у ngrx
какие-либо режимы отладки, которые я мог пропустить? Есть ли где-то скрытый файл журнала, о котором я не знаю, который мог бы сказать мне, что происходит? Или это просто тот случай, когда открытие проблемы с ngrx
может быть лучшим способом продвижения вперед?