Menu
CoddyTech

Eine Fehlerantwort

Teil des Abschnitts Express-Grundlagen der Node.js-Journey von Coddy. Lektion 17 von 23.

Eine Route kann fehlschlagen, weil auf dem Server etwas schiefgelaufen ist. Das Werfen eines Error übergibt diesen Fehler an Express. Ein Fehler-Handler ist eine Middleware mit vier Parametern, wobei err an erster Stelle steht. Express leitet ausgelöste Fehler an diese Art von Middleware weiter.

app.use((err, req, res, next) => {
    res.status(500).json({error: 'Try later'});
});

Platziere den Handler nach den Routen. Der Client sollte eine kurze Nachricht erhalten, während der Server die Details protokollieren kann. Behalte alle vier Parameter bei, auch wenn next nicht verwendet wird: Express erkennt Fehler-Handler anhand der Funktionssignatur.

Bevor du einen Handler hinzufügst, gibt GET /broken die eigene HTML-Fehlerseite von Express zurück. Auch ein Aufruf von next(err) leitet einen Fehler an den Fehler-Handler weiter; ein Aufruf von next() setzt die Ausführung normal fort.

challenge icon

Aufgabe

Einfach

„Spielen“ führt nur practice-errors/server.js aus. Die Dateien deiner Recipe Box bleiben unberührt, und du arbeitest in der nächsten Lektion daran weiter.

Drücke auf „Spielen“ und sende GET /broken, um die Standardfehlerseite zu sehen. Füge nach den Routen einen Fehler-Handler hinzu. Protokolliere err.message mit console.error und sende dann den Status 500 sowie {"error":"Try later"}. Die Antwort darf Database offline nicht offenlegen, aber die Konsole muss es anzeigen.

Die Routen, die einen Fehler auslösen, befinden sich in der gesperrten Datei practice-errors/routes.js. Lass ihre Einbindung bestehen; schreibe den Handler in server.js.

Probier es selbst

import routes from './routes.js';
import express from 'express';
const app = express();
app.use(routes);
// Füge hier den Fehler-Handler hinzu.
app.listen(3000);

Alle Lektionen in Express-Grundlagen

Übe selbstständig: Express-Playground