Fehlerbehandlung mit NodeJS + Express beseitigen

( Jaydipsinh Vaghela) (1. September 2020)

Foto von Erik Mclean auf Unsplash

Die Fehlerbehandlung in Javascript ist ein wenig ein bisschen schmerzhaft, wenn Sie gerade erst anfangen. Heute werde ich Ihnen erklären, wie Sie mit Fehlern mit NodeJS + Express umgehen und wie Sie dies auf unterschiedliche Weise tun.

Der Grund, warum ich diesen Artikel schreibe, ist, dass ich ein Interview für eine Junior-Rolle nehme Stellen Sie normalerweise die Frage, wie eine nicht vorhandene Route behandelt werden soll oder wie die Fehler beim Erstellen einer API mit NodeJS behandelt werden sollen. Viele Entwickler können diese Frage nicht beantworten. Daher richtet sich dieser Artikel speziell an Einsteiger oder Nachwuchsentwickler.

Wir werden NodeJS (v12.18. *), Express (v4.17. *) Und ESLint mit Airbnb-Codierungsstilrichtlinie . Ich habe den Github-Link als Referenz angehängt, wenn Sie ihn überprüfen möchten.

Hier sind die Dinge, die wir behandeln werden:

  • Verstehen Sie, wie Express Routen definiert und wie sie zugeordnet werden.
  • Erstellen Sie eine Express-Middleware, um die API zu verarbeiten, wenn keine Route vorhanden ist. li>
  • Erstellen Sie eine Express-Middleware, um alle Arten von Fehlern zu behandeln.

Express-Routenmechanismus & Es gibt keine Route Middleware

Wir kann eine Route zum Ausdrücken mit der Methode app.use() oder express.Router() hinzufügen. Wenn wir diese Methode verwenden, folgt express dem Ansatz von oben nach unten, um die Liste der registrierten Routen hinzuzufügen. Wenn wir also eine API aufrufen, beginnt der Server, die passende Route von oben nach unten zu finden. Während dieses Vorgangs wird die Anforderung mit der ersten übereinstimmenden Route bedient. Sie können dieselbe Route mehrmals mit Express erstellen, aber bei diesem Ansatz wird immer die erste Route ausgeführt, um die Anforderung zu bedienen.

Wenn jemand versucht, auf einen API-Endpunkt zuzugreifen, der nicht vorhanden ist, erhalten Sie Ein unerwarteter Fehler vom Server. Für bewährte Verfahren sollten wir uns um diese Art von Situation kümmern. Wir können keinen unerwarteten Fehler in das Frontend werfen, wenn wir dies aus UX-Sicht betrachten. Um mit einer solchen Situation fertig zu werden, müssen wir die Express-Middleware verwenden, die sich um eine keine Route Situation kümmert. Hier ist ein Beispielcode.

Es gibt keine Route Middleware

Diese Middleware muss die letzte Anweisung Ihres Routendefinitionscodes sein. Jede andere Route, die nach dieser Middleware definiert wird, wird niemals ausgeführt, daher ist die Position dieser Middleware sehr wichtig. Wenn Express nach einer Route sucht und keine passenden Routen findet, führt Express den Code dieser Middleware aus, wo wir die entsprechenden Maßnahmen ergreifen können. Grundsätzlich antworten wir mit einer richtigen Fehlermeldung in der Antwort, damit der Frontend-Typ eine entsprechende Aktion ausführen kann.

Fehler in der Geschäftslogik & wie man damit umgeht

Benutzererfahrung ist der Schlüssel zum Erfolg jeder Webanwendung. Wir wollen immer eine Benutzerinteraktion mit einer positiven Stimmung, auch bei Fehlern! Wir schreiben jeden Tag jede Menge Code und es ist nicht möglich, den Code ohne Fehler zu schreiben. Besonders wenn Sie auf der Junior-Ebene sind, besteht eine größere Wahrscheinlichkeit, dass Fehler auftreten. Wenn beim Umgang mit Express für die API unser Code normal abstürzt, wird das gesamte Fehlerobjekt als Antwort auf die Anforderung übergeben, die unter keinen Umständen gültig ist. Wir müssen Code-Abstürze so behandeln, dass wir die richtige Fehlermeldung an den Benutzer weitergeben können. Hier ist der Code zum Hinzufügen von Middleware, um Fehler in Express zu behandeln.

Fehler beim Behandeln von Middleware

Auf diese Weise werden innerhalb der Geschäftslogik generierte Fehler innerhalb des Fehlerobjekts zurückgegeben. Das Fehlerobjekt enthält die vollständige Stapelverfolgung des Fehlers. Wir können den Status vom Antwortobjekt abrufen, um die Informationen richtig zu behandeln. Wenn kein Statuscode gefunden wird, geben wir den Standardstatuscode 500 zurück, was bedeutet, dass auf dem Server ein Fehler aufgetreten ist. Das Fehlerverfolgungsobjekt enthält immer eine Meldung in einem für Menschen lesbaren Format, um den Fehler zu beschreiben.

Ich möchte hier einige erweiterte Dinge hinzufügen, wenn ich den Produktionsaufbau betrachte. Wir sollten irgendwo eine Warnung senden, um bei jedem Fehler geeignete Maßnahmen zu ergreifen.Normalerweise sende ich lieber eine E-Mail-Benachrichtigung an das Entwicklerteam, oder Sie können eine Fehlerverfolgungssoftware wie BugSnag verwenden, um alle Arten von Dingen zu verfolgen.

Unten finden Sie ein Code-Snippet mit Arbeitscode, damit Sie es lokal ausführen und damit spielen können, um ein besseres Verständnis zu erhalten. Sie finden auch den vollständigen Codezugriff auf dem Repo mit Arbeitscode.

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

Vollständiger Arbeitscode mit Fehlerbehandlung

Ich hoffe, dieser Artikel hilft dem Junior-Entwickler, mehr Klarheit bei der Ausnahmebehandlung zu erhalten.