2012-04-16 11 views
1

私はnodeJSとsenchalabのミドルウェアを接続しています(表現していません!!)。私は静的エラー(404のような)をキャッチする必要があります。どのように私はこれらを得るのですか?ソースを調べようとしましたが、connect.staticにエラーハンドラを渡す方法が見つかりませんでした。ここnodejs接続静的404エラーをキャッチする方法はありますか?

は、私(に持っているが)を使用する一般的な構造の要旨です:

https://gist.github.com/2397415

答えて

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が直接使用することを意図していなかった

、それはエクスプレス

+0

great、tnx!うまくいくように - 私はそれができるだけ早くそれをテストし、私がそれを得た解決した答えを確認:) – itsatony

+0

再び、うまく動作します。実際には急いで私のためのオーバーヘッドです - 私は一種の非常に異なるビューシステムなどと1ページのアプリケーションのための接続の周りに自分のフレームワークを書いた....とにかく、tnx! – itsatony

2

あなたは、静的およびすべてのあなたのルートの後にキャッチすべてのルートを追加することができます。

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

それは、すべての比類のないGET要求をキャッチします。あなたのルートに基づいて

+0

よう フレームワークをサポートするために存在しているあなたは私の簡単な例を与えることができますか?私のルーター機能はこのようには機能しません - 私はこのようなエクスプレスが動作することを認識しますが、私は明示的に行かなくてはなりません。 私のように見えます:https://gist.github.com/2397415 – itsatony

関連する問題