我使用nodeJS和senchalab的連接中間件(不表達!!)。我需要捕捉靜態錯誤(如404)。我如何得到這些?我試圖檢查源,但我找不到一種方法來將錯誤處理程序傳遞給connect.static。如何捕捉nodejs連接靜態404錯誤?
這裏是一般結構的要點我(有)使用方法:
https://gist.github.com/2397415
我使用nodeJS和senchalab的連接中間件(不表達!!)。我需要捕捉靜態錯誤(如404)。我如何得到這些?我試圖檢查源,但我找不到一種方法來將錯誤處理程序傳遞給connect.static。如何捕捉nodejs連接靜態404錯誤?
這裏是一般結構的要點我(有)使用方法:
https://gist.github.com/2397415
根據您的路線:
router.routes['/'] = 'my page';
router.routes['/404'] = '404 test';
我想你的意思是這樣的:
connect()
.use(connect.static(__dirname + '/public'))
.use(function(req, res, next){
switch (req.url) {
case '/404':
var body = '404 test';
res.statusCode = 404;
res.setHeader('Content-Length', body.length);
res.end(body);
break;
default:
var body = 'my page';
res.setHeader('Content-Length', body.length);
res.end(body);
}
})
.listen(3001);
此外,我想補充一點,在舊連接1.x版本中您可以使用「connect.router」 ,但在2.x版本中,它是removed,並轉而表示。如果您需要有用的路由系統,使用快遞:
連接從來就可以直接使用,它的存在是爲了支持 框架,如快遞
你可以添加一個包羅萬象的後靜態路由,所有的路線:
app.get('*', function(req, res){
//respond with 404 page or something.
})
它會捕獲所有不匹配的GET請求。
你能不能給我一個簡短的例子?我的路由器功能不能這樣工作 - 我意識到,這樣的快遞工程,但我必須去沒有明文... 我看起來像這樣:https://gist.github.com/2397415 – itsatony 2012-04-16 10:02:42
偉大的,TNX!看起來不錯 - 我會盡快測試它,並檢查答案解決一旦我得到它:) – itsatony 2012-04-17 11:34:39
tnx再次,很好地工作。實際上表達對我來說是一個很大的開銷 - 我有點寫我自己的框架來連接一個非常不同的視圖系統的單頁面應用程序,等等......反正,tnx! – itsatony 2012-04-19 08:42:50