Jak se zbavit zpracování chyb pomocí NodeJS + Express

( Jaydipsinh Vaghela) (1. září 2020)

Foto: Erik Mclean na Unsplash

Zpracování chyb v JavaScriptu je málo trochu bolesti, když právě začínáte. Dnes vám vysvětlím, jak zacházet s chybami v NodeJS + Express a různými způsoby, jak to udělat.

Důvod, proč píšu tento článek, je ten, že když přijímám pohovor pro juniorskou roli, běžně si kladete otázku, jak zacházet s trasou, která neexistuje, nebo jak zacházet s chybami při vytváření API s NodeJS? Mnoho vývojářů nedokáže na tuto otázku odpovědět. Tento článek je tedy určen zejména pro začínající a mladší vývojáře.

Budeme používat NodeJS (v12.18. *), Express (v4.17. *) A ESLint s Pokyny pro styl kódování Airbnb . Pro vaši referenci jsem připojil odkaz Github , pokud si jej chcete prohlédnout.

Tady jsou věci, kterým se budeme zabývat:

  • Pochopte, jak Express definuje trasy a jejich mapování.
  • Vytvořit expresní middleware pro zpracování API, pokud neexistuje žádná cesta.
  • Pochopit, co se stane, pokud kód generuje náhodné chyby
  • Vytvořit expresní middleware pro zpracování jakékoli chyby

Mechanismus expresní trasy & Middleware neexistuje žádná cesta

My může přidat cestu k vyjádření pomocí metody app.use() nebo express.Router(). Když použijeme tuto metodu, expresní postupuje podle postupu shora dolů pro přidání seznamu registrovaných tras. Když tedy zavoláme API, server začne hledat odpovídající trasu shora dolů. Během tohoto procesu obslouží požadavek s první shodnou trasou. Stejnou trasu jste schopni vytvořit vícekrát s expresem, ale s tímto přístupem se první trasa vždy provede, aby vyhověla požadavku.

Pokud se někdo pokusí získat přístup k koncovému bodu API, který neexistuje, dostanete neočekávaná chyba ze serveru. Pro nejlepší postup bychom se měli o tento druh situace postarat. Nemůžeme vrhnout neočekávanou chybu na frontend, pokud to vezmeme z pohledu UX. Abychom takovou situaci zvládli, musíme použít expresní middleware, který se postará o žádnou cestu . Zde je ukázkový kód.

Middleware neexistuje žádná trasa

Tento middleware musí být posledním příkazem kódu definice trasy. Jakákoli jiná cesta definovaná po tomto middlewaru se nikdy nespustí, takže poloha tohoto middlewaru je velmi důležitá. Když Express začne hledat trasu a pokud nenajde žádné odpovídající trasy, Express provede kód tohoto middlewaru, kde můžeme provést příslušnou akci. V zásadě odpovíme správnou chybovou zprávou v odpovědi, aby na ní mohl frontendový hráč provést příslušnou akci.

Chyba v obchodní logice & jak s tím zacházet

Klíčem k úspěchu jakékoli webové aplikace je uživatelská zkušenost. Vždy chceme interakci uživatele s pozitivní atmosférou i při chybách! Každý den píšeme spoustu kódu a není možné jej napsat bez chyby. Zvláště když jste na juniorské úrovni, máte větší šanci na chyby. Pokud se jedná o expres pro API, pokud náš kód selže normálně, předá se celý chybový objekt jako odpověď na požadavek, který za žádných okolností není platný. Musíme řešit zhroucení kódu takovým způsobem, abychom mohli uživateli předat správnou chybovou zprávu. Zde je kód, který je přidán pro přidání middlewaru ke zpracování jakékoli chyby v expresu.

Chyba při zpracování middlewaru

Tímto způsobem budou chyby generované v obchodní logice vráceny uvnitř objektu chyby. Objekt chyby obsahuje trasování celého zásobníku o chybě. Stav můžeme získat z objektu odpovědi pro správné zacházení s informacemi. Pokud není nalezen žádný stavový kód, vrátíme výchozí stavový kód 500, což znamená, že se na serveru něco pokazilo. Uvnitř objektu pro sledování chyb je vždy zpráva v čitelném formátu popisujícím chybu.

Chtěl bych zde přidat několik pokročilých věcí, když uvažujeme o produkčním sestavení. Měli bychom někam poslat upozornění, abychom při každé chybě podnikli příslušná opatření.Za normálních okolností raději pošlu e-mailové upozornění vývojářskému týmu, nebo můžete ke sledování všech druhů věcí použít software pro sledování chyb, například BugSnag .

Níže je fragment kódu s fungujícím kódem, takže jej můžete spustit lokálně a hrát si s ním, abyste lépe porozuměli. Můžete také najít plný přístup k kódu v repo s fungujícím kódem.

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

Úplný pracovní kód se zpracováním chyb

Doufám, že tento článek pomůže mladému vývojáři získat jasnější způsob zpracování výjimek.