Expressで作ったサーバーを動作させて、自分なりのロジックを組んで、いざ動かしてみよう!というとき、なんだかろくなメッセージが表示されず些細な変数名の間違いみたいなもがどうにも見つけにくいと思った。
プロジェクトを生成したときに自動でできるapp.jsに以下のようなコードがある。
// development error handler
// will print stacktrace
if (app.get('env') === 'development') {
app.use(function(err, req, res, next) {
//コンソールにエラー表示
console.error(err.stack);
res.status(err.status || 500);
res.render('error', {
message: err.message,
error: err
});
});
}
// production error handler
// no stacktraces leaked to user
app.use(function(err, req, res, next) {
res.status(err.status || 500);
res.render('error', {
message: err.message,
error: {}
});
});
ここで、development環境やproduction環境でのエラーハンドリングを定義しているが、デフォルトでdevelopment環境のようなので、上のようにconsolo.errorで出力させるようにすることでやりたいことができた。
「メソッドが無いよ」「null参照したよ」といった基本的なミスはこれで簡単に場所まで補足できると思う。