2016-05-17 128 views
0

我正在使用Express的Node應用程序。在這個應用程序中,我有以下內容:快速路由 - 根頁面和404

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

此路線適用於正面情況。但是,對於否定的情況,它卻失敗了。例如,如果我訪問「http://www.example.com/404」,我仍然可以看到索引頁。實際上,我希望它能夠通過,以便Express錯誤處理程序解決錯誤。

如何更改我的路線,以便當某人訪問我的應用程序的根目錄時,他們會看到主頁。但是,如果他們輸入了其他內容,他們會看到404頁面?

+0

的[我怎樣才能得到Express.js到404只失蹤路線?(HTTP可能重複: //sackoveroverflow.com/questions/11500204/how-can-i-get-express-js-to-404-only-on-missing-routes) –

回答

1

你想用app.get()(或可能app.all()),不app.use()

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

爲什麼app.use('/', ...)比賽/404解釋here原因:

路由將匹配任何路徑馬上用「/」跟隨它的路徑。例如:app.use('/apple', ...)將匹配「/ apple」,「/ apple/images」,「/ apple/images/news」等。

+0

有趣。我不知道。感謝你的分享! – user687554

0

您可以定義中間件來專門處理錯誤。

快速的錯誤處理中間件有四個參數,並應該將所有其他途徑之後被定義:

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!'); 
});