如何捕获nodejs连接静态404错误?

时间:2012-04-16 08:37:33

标签: node.js static error-handling http-status-code-404 connect

我使用nodeJS和senchalab的连接中间件(不是表达!!)。我需要捕获静态错误(如404)。我怎么得到这些?我试图检查源代码,但我找不到将错误处理程序传递给connect.static的方法。

这是我必须使用的一般结构的要点:

https://gist.github.com/2397415

2 个答案:

答案 0 :(得分:5)

根据您的路线:

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并移动到表达。如果您需要有用的路由系统,请使用express:

  

Connect从未打算直接使用,它可以支持   像Express这样的框架

答案 1 :(得分:2)

你可以在静态和所有路线之后添加一个包罗万象的路线:

app.get('*', function(req, res){
  //respond with 404 page or something.
})

它将捕获所有无法比拟的GET请求。