2016-10-23 5 views
4

私は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; 
    } 
}); 
+0

動的にどうですか?何らかの方法で、ルータ、 'app.use'、' app.error'やミドルウェアなどを使ってルートを定義する必要がありますか?すべてのファイルが静的で、静的なもの以外のルートはないようですが、ダイナミックリクエストはすべて404ハンドラで終わるようです。 – adeneo

+0

はい、それらは全て静的です。私はいくつかの取得要求と送信要求を持っていますが、それは私が構築しているAPIのためのものです。ミドルウェアをセットアップすると、すべてのリクエストが404エラーになります。 – AlexisP

+1

静的なものであっても、404のルートに終わるでしょうか?ルートが定義された後に 'listen'する必要がありますので、その行を一番下に移動してください。 – adeneo

答えて

6

これは私のために働いている:

var express = require('express'); 
var app = express(); 

app.use(express.static('public')); 

app.get('/', function (req, res) { 
    res.send('Hello World!'); 
}); 

app.get('/employee', function (req, res) { 
    res.send('Employee route !!'); 
}); 


// Handle 404 - Keep this as a last route 
app.use(function(req, res, next) { 
    res.status(404); 
    res.send('404: File Not Found'); 
}); 

app.listen(3000, function() { 
    console.log('Example app listening on port 3000!'); 
}); 

フォルダ構造、

enter image description here

今、私たちが発行したときこのようなリクエストは

http://localhost:3000/sample

これは、ミドルウェアによって処理されています。

UPDATE

GETリクエストを記述せずにHTMLファイルを表示する方法は、この

app.use(express.static('public')); 
app.use(express.static('views')); 

のようなだけで、別のミドルウェアはまさに「国民の後の見解 "ミドルウェアを追加で。我々は

http://localhost:3000/index.html

を与えれば今すぐページが表示される

+0

問題は、私は50のHTMLページを持っている、私はそれらのすべてのget要求を作成したくないということです。私がしなければならない限り。 – AlexisP

+0

こんにちは。いいですか?私があなたを誤解した場合の謝罪。ごめんなさい ! – shanmugharaj

+0

パーフェクト、それは動作します!どうもありがとう! – AlexisP