Angular · BoardGamesNook · Programowanie · TypeScript

Błąd „Cannot match any routes. URL Segment: ‚_'”

Od kilku miesięcy działania aplikacji ciągle miałam w przeglądarce błąd dotyczący url:

exception.PNG

Ciągle nie miałam czasu się za niego zabrać, bo skoro aplikacja działała, to rozwiązanie problemu zostawiałam na później. Wiem, nie jest to zbyt dobra praktyka. Powinnam od razu naprawić błąd – ale czasami to, że wiemy, co trzeba zrobić, nie wystarcza do tego, żeby to zrobić ;p

Zerknęłam w internety i co się okazało? Że url jest case-sensitive, czyli wielkość liter ma znaczenie (źródło)

Żeby pozbyć się błędu wystarczyło podmienić routy i wszelkie odwołania do url zawierające wyrazy pisane z wykorzystaniem wielkich liter. Tzn. na przykład (screeny z VS: po lewej oryginał, po prawej zmieniona wersja pliku):

  • w plikach z routami dla danego komponentu:

fix_url

  • w plikach .service dla danego komponentu

fix_url_service

  • w miejscach, gdzie nawigujemy do strony

fix_url_navigate.PNG

  • na stronie głównej

fix_url_main.PNG

Jak widać, wystarczyło podmienić tylko nazwę kontrolera, bez potrzeby zmiany nazw metod.

Zabrałam się więc do pracy i w każdym komponencie, w każdym serwisie i routcie zmieniłam wielkość liter. Byłam bardzo z siebie zadowolona, gdy skończyłam. Ale okazało się, że to wcale nie naprawiło problemu. Peszek.

Po kilku dniach zrobiłam kolejne podejście do problemu. Przeczytałam ZE ZROZUMIENIEM komunikat błędu. Stwierdziłam, że tak na „babski rozum” – konsola krzyczy o tym, że nie rozpoznaje w url znaku „_”. Sprawdziłam – nigdzie takiego znaku do url nie przekazywałam. Odkryłam za to, że po zalogowaniu aplikacji przekierowywała mnie do tajemniczej strony:

https://localhost:44375/#/_

Zagadka rozwiązana. Czemu przekierowuje do takiej strony? Tego akurat nie wiem. Ale skoro dzieje się tak tylko po zalogowaniu użytkownika, to mogę na tym skorzystać i utworzyć ekran powitalny. Na ten moment może on po prostu zwracać napis „Witaj w aplikacji”. A kiedyś będę mogła dodać tam jakieś aktualności.

Routy dla komponentu wyglądają następująco:

welcome_module.PNG

I tyle. Szybkie i proste, należało to zrobić już dawno temu. Ale nawet pomijając to, kiedy zabrałam się za naprawę błędu ważna jest jeszcze jedna rzecz.

Najpierw przeczytać i zrozumieć błąd, a dopiero potem szukać ewentualnego rozwiązania w internetach.

Uczulam na to, bo (jak widać) sama się na tym przejechałam – i to nie raz, ani dwa. Znalezione wcześniej rozwiązanie nie było adekwatne do mojego problemu. Nie sprawdziłam tego, bo nie przeczytałam dokładnie całego komunikatu błędu. Zrobiłam Ctrl+C, Ctrl+V i wybrałam kilka górnych wyników ze StackOverflow. Więc bardzo ważna rzecz – dla Was i dla mnie:

Czytanie ze zrozumieniem!

Skomentuj

Wprowadź swoje dane lub kliknij jedną z tych ikon, aby się zalogować:

Logo WordPress.com

Komentujesz korzystając z konta WordPress.com. Wyloguj / Zmień )

Zdjęcie z Twittera

Komentujesz korzystając z konta Twitter. Wyloguj / Zmień )

Facebook photo

Komentujesz korzystając z konta Facebook. Wyloguj / Zmień )

Google+ photo

Komentujesz korzystając z konta Google+. Wyloguj / Zmień )

Connecting to %s