Eliminarea gestionării erorilor cu NodeJS + Express

( Jaydipsinh Vaghela) (1 sept. 2020)

Fotografie de Erik Mclean pe Unsplash

Tratarea erorilor în Javascript este puțin un pic de durere când abia începi. Astăzi vă voi explica cum să gestionați erorile cu NodeJS + Express și diferite moduri de a face acest lucru.

Motivul pentru care scriu acest articol este că, atunci când iau un interviu pentru un rol junior, În mod normal, puneți întrebarea cum să gestionați o rută care nu există sau cum să gestionați erorile în timp ce creați un API cu NodeJS? Mulți dezvoltatori nu pot răspunde la această întrebare. Deci, acest articol este destinat în special dezvoltatorilor entry-level sau junior.

Vom folosi NodeJS (v12.18. *), Express (v4.17. *) Și ESLint cu Ghidul stilului de codare Airbnb . Am atașat link-ul Github pentru referință, dacă doriți să îl examinați.

Iată lucrurile pe care le vom acoperi:

  • Înțelegeți modul în care expres definește rutele și maparea acestuia
  • Creați middleware expres pentru a gestiona API atunci când nu există nicio rută
  • Înțelegeți ce se întâmplă dacă codul generează erori aleatoare
  • Creați middleware expres pentru a gestiona orice tip de eroare

Mecanism de rută expres & Nu există nicio rută middleware

We poate adăuga o rută de exprimat folosind metoda app.use() sau express.Router(). Când folosim această metodă, expresul urmează abordarea de sus în jos pentru adăugarea listei de rute înregistrate. Deci, atunci când apelăm un API, serverul începe să găsească ruta potrivită de sus în jos. În timpul acestui proces, servește solicitarea cu primul traseu de potrivire. Puteți crea același traseu de mai multe ori cu expres, dar cu această abordare primul traseu se execută întotdeauna pentru a răspunde cererii.

Dacă cineva încearcă să acceseze un punct final API care nu există, veți obține o eroare neașteptată de la server. Pentru cele mai bune practici, ar trebui să avem grijă de acest tip de situație. Nu putem arunca o eroare neașteptată în frontend dacă luăm în considerare acest lucru dintr-o perspectivă UX. Pentru a rezolva o astfel de situație, trebuie să folosim middleware-ul expres care va avea grijă de o nu există o rută . Iată câteva exemple de cod.

Niciun traseu nu există middleware

Acest middleware trebuie să fie ultima declarație a codului dvs. de definire a rutei. Orice altă rută definită după acest middleware nu va fi executată niciodată, deci poziția acestui middleware este foarte importantă. Când Express începe să caute o rută și dacă nu găsește nicio rută potrivită, atunci Express execută codul acestui middleware unde putem lua măsurile corespunzătoare. Practic, răspundem cu un mesaj de eroare adecvat în răspuns, astfel încât tipul frontend să poată lua o acțiune adecvată asupra acestuia.

Eroare în logica de afaceri & cum să o gestionați

Experiența utilizatorului este cheia succesului oricărei aplicații web. Vrem mereu interacțiunea utilizatorului cu o atmosferă pozitivă chiar și cu erori! Scriem tone de cod în fiecare zi și nu este posibil să scriem codul fără erori. Mai ales când ești la nivel junior există mai multe șanse de a avea erori. Când avem de-a face cu expres pentru API, dacă codul nostru se blochează în mod normal, întregul obiect de eroare este transmis ca răspuns la cerere, care nu este valabil în nicio circumstanță. Trebuie să gestionăm blocările de cod în așa fel, încât să putem transmite mesajul de eroare adecvat utilizatorului. Iată codul extras pentru a adăuga middleware pentru a gestiona orice eroare în expres.

Eroare la gestionarea middleware

Folosind aceasta, erorile generate în cadrul logicii de afaceri vor fi returnate în interiorul obiectului de eroare. Obiectul eroare conține urmele complete ale stivei despre eroare. Putem obține starea din obiectul de răspuns pentru tratarea corectă a informațiilor. Dacă nu se găsește niciun cod de stare, returnăm codul de stare implicit 500, ceea ce înseamnă că ceva nu a funcționat corect pe server. Există întotdeauna un mesaj în interiorul obiectului de urmărire a erorilor într-un format care poate fi citit de om pentru a descrie eroarea.

Aș dori să adăug aici câteva lucruri avansate atunci când ne gândim la construcția de producție. Ar trebui să trimitem o alertă undeva pentru a lua măsurile corespunzătoare cu privire la fiecare eroare.În mod normal, prefer să trimit o alertă prin e-mail echipei de dezvoltatori sau puteți utiliza un software de urmărire a erorilor, cum ar fi BugSnag pentru a urmări tot felul de lucruri.

Mai jos este un fragment de cod cu cod de lucru, astfel încât să îl puteți rula local și să vă jucați cu el pentru a înțelege mai bine. Puteți găsi, de asemenea, acces complet la cod pe repo cu cod de lucru.

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

Cod de lucru complet cu gestionarea erorilor

Sper că acest articol va ajuta dezvoltatorul junior să obțină mai multă claritate cu gestionarea excepțiilor.