2016-05-17 9 views
0

Ich arbeite an einer Knoten-App, die Express verwendet. In dieser App habe ich folgendes:Express-Routing - Root-Seite und 404

app.use('/', function(req, res) { 
    res.render('index', {});    
}); 

Diese Route funktioniert gut für den positiven Fall. Es schlägt jedoch für den negativen Fall fehl. Zum Beispiel, wenn ich "http://www.example.com/404" besuche, sehe ich immer noch die Indexseite. In Wirklichkeit möchte ich, dass es durchfällt, so dass der Express Error-Handler den Fehler behebt.

Wie ändere ich meine Route, so dass, wenn eine Person den Stamm meiner App besucht, sie die Startseite sehen. Und wenn sie etwas anderes eingeben, werden sie die 404-Seite sehen?

+0

Mögliches Duplikat (http [Wie kann ich Express.js bis 404 nur auf fehlende Routen bekommen?]: //stackoverflow.com/questions/11500204/how-can-i-get-express-js-to-404-only-on-missing-routes) –

Antwort

1

Sie wollen app.get() (oder möglicherweiseapp.all()) verwenden, nicht app.use():

app.get('/', function(req, res) { 
    res.render('index', {}); 
}); 

Der Grund, warum app.use('/', ...) Matches /404 wird here erklärt:

Eine Route wird jeden Pfad übereinstimmen, die folgt seinem Pfad sofort mit einem "/". Beispiel: app.use('/apple', ...) entspricht "/ apple", "/ apple/images", "/ apple/images/news" und so weiter.

+0

Interessant. Ich hatte keine Ahnung. Ich danke Ihnen für das Teilen! – user687554

0

Sie können Middleware definieren, um speziell Fehler zu behandeln.

Express Fehlerbehandlung Middleware vier Argumente übernimmt und soll nach allen anderen Routen definiert werden:

app.use('/', function(req, res) { 
    res.render('index', {});    
}); 

app.use(function(err, req, res, next) { 
    console.error(err.stack); 
    res.status(500).send('Something broke!'); 
});