2017-04-03 6 views
0

私はノード7.8.0を持っており、私は読んでいますNode.js Best Practice Exception HandlingNode.jsのエラー処理の設定方法は?

まだnode.jsでのエラー処理を理解できないようです。私はこのコード

app.use((req, res, next) => { 
    let err = new Error('Not Found'); 
    err.status = 404; 
    next(err); 
}); 
app.use((err, req, res) => { 
    res.status(err.status); 
    res.render('error'); 
}); 

404を持っている404するため

server.on('error',() => console.log('Here I should be replacing 
the Error console.')); 

を持っている私のhttpについては

がキャッチされている、それはエラーオブジェクトを作成し、それは次のように正しくエラービューをレンダリングによって処理されますが欲しいです。しかし、それはまた私のコンソールにエラーログをスローし、私はそれがどこから来ているのか、そしてそれを止める方法を知らない。

私は自分自身のエラー処理を使用したいと思います。実際に404のようなエラーをコンソールに書き込まないでください。

私が試したコードは機能していないようです。

var server = http.createServer(app); 
const onError =() => console.log('Here I should be replacing the Error console.'); 
server.on('error', onError); 
server.on('uncaughtException', onError); 
process.on('uncaughtException', onError); 

答えて

0

エラーハンドラが4つの引数を必要とするので、エラービューをどのようにレンダリングできるかはわかりません.Expressハンドラと通常のルートハンドラを区別できる方法は、hereです。

代わりにこれを試してください。私はそれが動作をテストするための環境を設定している場合

app.use((err, req, res, next) => { 
    res.status(err.status); 
    res.render('error'); 
}); 
0

これはexpressjによるものです。 Expressがenvがテストと等しくない場合、すべてのエラーがコンソールに書き込まれます。

function logerror(err) { 
    if (this.get('env') !== 'test') console.error(err.stack || err.toString()); 
} 

またhttp.Serverはエラーという名前のイベントがありません。

+0

あなたは、正しかったです。しかし、それを本番環境に設定すると、コンソールにエラーが送信されます。どんな環境芽の開発にもそれをしないように強制する方法がありますか? – Ragnar

関連する問題