【问题标题】:How to catch a nodejs connect static 404 error?如何捕获 nodejs 连接静态 404 错误?
【发布时间】:2012-04-27 14:18:24
【问题描述】:

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

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

https://gist.github.com/2397415

【问题讨论】:

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


    【解决方案1】:

    根据您的路线:

    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 等框架

    【讨论】:

    • 太棒了,tnx!看起来不错 - 我会尽快对其进行测试,并在完成后检查答案是否已解决:)
    • tnx 再次,效果很好。实际上 express 对我来说是一个很大的开销——我为一个具有非常不同视图系统的单页应用程序编写了自己的框架,等等......无论如何,tnx!
    【解决方案2】:

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

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

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

    【讨论】:

    • 你能给我一个简短的例子吗?我的路由器功能不是这样工作的——我意识到快递是这样工作的,但我必须不用快递......我的看起来像这样:gist.github.com/2397415
    猜你喜欢
    • 2017-07-25
    • 2019-12-19
    • 2016-01-06
    • 1970-01-01
    • 2015-12-02
    • 2011-02-10
    • 2011-09-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多