Pozbycie się obsługi błędów w NodeJS + Express

( Jaydipsinh Vaghela) (1 września 2020 r.)

Zdjęcie: Erik Mclean na Unsplash

Obsługa błędów w Javascript jest trochę trochę bólu, kiedy dopiero zaczynasz. Dzisiaj wyjaśnię ci, jak radzić sobie z błędami w NodeJS + Express i jak to robić.

Powodem, dla którego piszę ten artykuł, jest to, że kiedy biorę wywiad na młodszą rolę zwykle zadajesz pytanie, jak obsłużyć trasę, która nie istnieje lub jak poradzić sobie z błędami podczas tworzenia API w NodeJS? Wielu programistów nie jest w stanie odpowiedzieć na to pytanie. Dlatego ten artykuł jest przeznaczony specjalnie dla początkujących lub młodszych programistów.

Będziemy używać NodeJS (wersja 12.18. *), Express (wersja 4.17. *) I ESLint z Wytyczne dotyczące stylu kodowania Airbnb . Dołączyłem link do Github w celach informacyjnych, jeśli chcesz go przejrzeć.

Oto kwestie, które omówimy:

  • Zrozum, w jaki sposób express definiuje trasy i mapuje
  • Utwórz ekspresowe oprogramowanie pośredniczące do obsługi interfejsu API, gdy żadna trasa nie istnieje
  • Dowiedz się, co się stanie, jeśli kod generuje losowe błędy
  • Twórz ekspresowe oprogramowanie pośredniczące do obsługi wszelkiego rodzaju błędów

Mechanizm tras ekspresowych & Żadna trasa nie istnieje. Oprogramowanie pośredniczące

można dodać trasę do wyrażenia za pomocą metody app.use() lub express.Router(). Kiedy używamy tej metody, Express stosuje podejście od góry do dołu, aby dodać listę zarejestrowanych tras. Więc kiedy wywołujemy API, serwer zaczyna znajdować pasującą trasę od góry do dołu. Podczas tego procesu obsługuje żądanie z pierwszą pasującą trasą. Możesz utworzyć tę samą trasę wiele razy za pomocą ekspresu, ale w tym podejściu pierwsza trasa jest zawsze wykonywana, aby obsłużyć żądanie.

Jeśli ktoś spróbuje uzyskać dostęp do punktu końcowego API, który nie istnieje, otrzymasz nieoczekiwany błąd serwera. Aby uzyskać najlepszą praktykę, powinniśmy zająć się tego rodzaju sytuacją. Nie możemy rzucić nieoczekiwanego błędu na frontend, jeśli rozważymy to z perspektywy UX. Aby poradzić sobie z taką sytuacją, musimy użyć ekspresowego oprogramowania pośredniczącego, które zajmie się trasą . Oto przykładowy kod.

Żadna trasa nie istnieje oprogramowanie pośredniczące

To oprogramowanie pośredniczące musi być ostatnią instrukcją kodu definicji trasy. Żadna inna trasa zdefiniowana po tym oprogramowaniu pośrednim nigdy nie zostanie wykonana, więc położenie tego oprogramowania pośredniego jest bardzo ważne. Gdy express zaczyna szukać trasy i nie znajduje żadnych pasujących tras, wtedy express wykonuje kod tego oprogramowania pośredniego, w którym możemy podjąć odpowiednią akcję. Zasadniczo odpowiadamy odpowiednim komunikatem o błędzie w odpowiedzi, aby osoba obsługująca interfejs użytkownika mogła podjąć odpowiednie działania.

Błąd w logice biznesowej & jak sobie z tym poradzić

Doświadczenie użytkownika jest kluczem do sukcesu każdej aplikacji internetowej. Zawsze chcemy, aby interakcja użytkownika była pozytywna, nawet w przypadku błędów! Codziennie piszemy tony kodu i nie jest możliwe napisanie kodu bez błędów. Zwłaszcza gdy jesteś na poziomie juniorskim, jest większa szansa na błędy. Gdy mamy do czynienia z express for API, jeśli nasz kod normalnie się zawiesza, cały obiekt błędu jest przekazywany jako odpowiedź na żądanie, które nie jest ważne w żadnych okolicznościach. Musimy radzić sobie z awariami kodu w taki sposób, aby przekazać użytkownikowi odpowiedni komunikat o błędzie. Oto fragment kodu w celu dodania oprogramowania pośredniego w celu obsługi dowolnego błędu w programie ekspresowym.

Błąd obsługi oprogramowania pośredniego

Dzięki temu błędy wygenerowane w logice biznesowej będą zwracane wewnątrz obiektu błędu. Obiekt błędu zawiera pełny ślad stosu dotyczący błędu. Możemy uzyskać status z obiektu odpowiedzi, aby poprawnie obsłużyć informacje. Jeśli nie zostanie znaleziony żaden kod statusu, zwracamy domyślny kod statusu 500, co oznacza, że ​​coś poszło nie tak na serwerze. Wewnątrz obiektu śledzenia błędów zawsze znajduje się komunikat opisujący błąd w formacie czytelnym dla człowieka.

Chciałbym tutaj dodać kilka zaawansowanych rzeczy, rozważając kompilację produkcyjną. Powinniśmy wysłać gdzieś ostrzeżenie, aby podjąć odpowiednie działania w przypadku każdego błędu.Zwykle wolę wysłać e-mail z powiadomieniem do zespołu programistów lub możesz użyć oprogramowania do śledzenia błędów, takiego jak BugSnag , aby śledzić różne rzeczy.

Poniżej znajduje się fragment kodu z działającym kodem, dzięki czemu można go uruchomić lokalnie i bawić się nim, aby uzyskać lepsze zrozumienie. Możesz również znaleźć pełny dostęp do kodu w repozytorium z działającym kodem.

GitHub Link: https://github.com/Jaydipsinhv/express-demo

W pełni działający kod z obsługą błędów

Mam nadzieję, że ten artykuł pomoże młodszym programistom uzyskać większą przejrzystość w obsłudze wyjątków.