Eliminazione della gestione degli errori con NodeJS + Express

( Jaydipsinh Vaghela) (1 settembre 2020)

Foto di Erik Mclean su Unsplash

La gestione degli errori in Javascript è minima un po un dolore quando sei appena agli inizi. Oggi ti spiegherò come gestire gli errori con NodeJS + Express e diversi modi per farlo.

Il motivo per cui sto scrivendo questo articolo è perché quando prendo unintervista per un ruolo junior, io normalmente ti chiedi come gestire un percorso che non esiste o come gestire gli errori durante la creazione di unAPI con NodeJS? Molti sviluppatori non sono in grado di rispondere a questa domanda. Quindi questo articolo è specialmente per sviluppatori entry-level o junior.

Useremo NodeJS (v12.18. *), Express (v4.17. *) Ed ESLint con Linee guida sullo stile di codifica di Airbnb . Ho allegato il link a Github come riferimento se desideri esaminarlo.

Ecco gli argomenti di cui parleremo:

  • Comprendere come express definisce le rotte e la sua mappatura
  • Crea middleware express per gestire lAPI quando non esiste alcuna rotta
  • Comprendere cosa succede se il codice genera errori casuali
  • Crea middleware espresso per gestire qualsiasi tipo di errore

Meccanismo di instradamento rapido & Nessun percorso esistente middleware

Noi può aggiungere una rotta da esprimere utilizzando il metodo app.use() o express.Router(). Quando utilizziamo questo metodo, express segue lapproccio dallalto verso il basso per aggiungere lelenco delle rotte registrate. Quindi, quando chiamiamo unAPI, il server inizia a trovare il percorso corrispondente dallalto verso il basso. Durante questo processo, serve la richiesta con la prima route corrispondente. Puoi creare la stessa rotta più volte con express, ma con questo approccio la prima rotta viene sempre eseguita per servire la richiesta.

Se qualcuno cerca di accedere a un endpoint API che non esiste, ottieni un errore imprevisto dal server. Per la migliore pratica, dovremmo occuparci di questo tipo di situazione. Non possiamo lanciare un errore imprevisto al frontend se lo consideriamo da una prospettiva UX. Per gestire una situazione del genere dobbiamo usare il middleware express che si prenderà cura di una situazione non esiste . Ecco un po di codice di esempio.

Nessun percorso esistente middleware

Questo middleware deve essere lultima istruzione del codice di definizione del percorso. Qualsiasi altra route definita dopo questo middleware non verrà mai eseguita, quindi la posizione di questo middleware è molto importante. Quando express inizia a cercare una route e se non trova alcuna route corrispondente, express esegue il codice di questo middleware in cui è possibile intraprendere lazione appropriata. Fondamentalmente, rispondiamo con un messaggio di errore appropriato nella risposta in modo che il ragazzo del frontend possa intraprendere unazione appropriata su di esso.

Errore nella logica aziendale & come gestirlo

Lesperienza utente è la chiave del successo di qualsiasi applicazione web. Vogliamo sempre linterazione dellutente con unatmosfera positiva anche con errori! Stiamo scrivendo tonnellate di codice ogni giorno e non è possibile scrivere il codice senza errori. Soprattutto quando sei a livello junior ci sono più possibilità di avere errori. Quando si ha a che fare con Express per lAPI, se il nostro codice si blocca normalmente, lintero oggetto di errore viene passato come risposta alla richiesta che non è valida in nessuna circostanza. Dobbiamo gestire gli arresti anomali del codice in modo tale da poter passare il messaggio di errore appropriato allutente. Di seguito è riportato il codice ritagliato per laggiunta di middleware per gestire eventuali errori in Express.

Middleware di gestione degli errori

Usando questo, gli errori generati allinterno della logica di business verranno restituiti allinterno delloggetto errore. Loggetto errore contiene la traccia dello stack completo sullerrore. Possiamo ottenere lo stato dalloggetto risposta per gestire correttamente le informazioni. Se non viene trovato alcun codice di stato, restituiamo il codice di stato 500 predefinito, il che significa che qualcosa è andato storto sul server. Cè sempre un messaggio allinterno delloggetto di traccia degli errori in un formato leggibile dalluomo per descrivere lerrore.

Vorrei aggiungere alcune cose avanzate qui quando si considera la build di produzione. Dovremmo inviare un avviso da qualche parte per intraprendere lazione appropriata su ogni errore.Normalmente, preferisco inviare un avviso e-mail al team degli sviluppatori oppure puoi utilizzare un software di monitoraggio degli errori simile a BugSnag per tenere traccia di tutti i tipi di cose.

Di seguito è riportato uno snippet di codice con codice funzionante in modo da poterlo eseguire localmente e giocare con esso per ottenere una migliore comprensione. Puoi anche trovare accesso completo al codice sul repository con codice funzionante.

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

Codice completamente funzionante con gestione degli errori

Spero che questo articolo aiuti lo sviluppatore junior a ottenere maggiore chiarezza con la gestione delle eccezioni.