私はExpress 4を使用していますが、私は約50ページのHTMLページを持っています。私は404エラーを処理しようとしていますが、どのように把握することはできません。ノード内のすべてのルータを手動で定義する必要はありません。ページが存在しない場合、404 Jadeテンプレートに動的にリダイレクトする方法はありますか?Express4でのハンドル404エラー
私はこのコードを試みたが、うまくいきませんでした:
app.enable('verbose errors');
app.set('port', 3000);
app.use(express.static(__dirname + '/html/'));
var server = http.createServer(app);
server.listen(app.get('port'), function() {
console.log('ONLINE !');
});
app.use(function(req, res, next) {
console.log('GET ' + req.originalUrl)
console.log('At %d', Date.now());
next();
});
// Handle 404
app.use(function(req, res, next) {
if(req.accepts('html') && res.status(404)) {
res.render('404.jade');
return;
}
});
動的にどうですか?何らかの方法で、ルータ、 'app.use'、' app.error'やミドルウェアなどを使ってルートを定義する必要がありますか?すべてのファイルが静的で、静的なもの以外のルートはないようですが、ダイナミックリクエストはすべて404ハンドラで終わるようです。 – adeneo
はい、それらは全て静的です。私はいくつかの取得要求と送信要求を持っていますが、それは私が構築しているAPIのためのものです。ミドルウェアをセットアップすると、すべてのリクエストが404エラーになります。 – AlexisP
静的なものであっても、404のルートに終わるでしょうか?ルートが定義された後に 'listen'する必要がありますので、その行を一番下に移動してください。 – adeneo