我使用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