1

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

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

https://gist.github.com/2397415

4

2 回答 2

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 版本中,它已被删除并移至 express。如果您需要有用的路由系统,请使用 express:

Connect 从来都不是直接使用的,它的存在是为了支持 Express 等框架

于 2012-04-16T17:10:07.527 回答
2

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

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

它将捕获所有不匹配的 GET 请求。

于 2012-04-16T09:35:14.003 回答