ich den folgenden Express 4-Middleware-Stack:Express 4 Middleware wenn Route nicht gefunden wird (Endhandler nicht aufgerufen): Wie kann man danach suchen?
const app = express();
const router = express.Router();
router.get('/test', testResponse);
app.use(checkAccessToken);
app.use(router);
app.use(sendResponse);
//Error Handling
app.use(function(err,req,res,next) {
// ... Do something here
});
function sendResponse(req, res) {
res.json({
data: res.locals.data,
meta: res.locals.meta
});
}
Wenn ich rufe Sie den Server mit einer Route, die nicht (wie GET/etwas) Handler der Funktion sendresponse ist kurz nach dem Router existiert genannt und die Der Aufrufer erhält eine Standardantwort statt der üblichen Nachricht "Can not GET/something", die vom Finalhandler-Modul kommt.
Ich dachte stattdessen, dass der Fehlerhandler hätte aufgerufen werden sollen, aber das ist nicht der Fall.
Gibt es eine Möglichkeit, den Router dazu zu zwingen, einen Fehler auszulösen, wenn eine Route nicht gefunden wird, oder den standardmäßigen Antworthandler einzuchecken, wenn eine Route nicht gefunden wurde?
Ich weiß, dass ich einen Wert in res.locals für jede Route hinzufügen kann, die eine Übereinstimmung und überprüfen Sie im Standard-Antwort-Handler dafür, aber ich möchte den "richtigen" Weg, um es zu tun, anstatt zu verwenden ein Workaround.
Ist Änderung 'app.use (sendresponse);' auf 'app.use (function (req, res, next) {nächste (neu Error (404));});' Ihr Problem lösen? . –
Überhaupt nicht, denn in diesem Fall wird der Fehler 404 ausgelöst, selbst wenn die Route gefunden wird. –
Rufen Sie 'next()' in der Routerfunktion an, um 'sendResponse' aufzurufen, oder? –