開発環境専用のエラーハンドラーミドルウェア。
このミドルウェアは開発環境でのみ使用することを目的としています。エラーが発生した場合、完全なエラースタックトレースと、このモジュールに渡されたオブジェクトの内部詳細がクライアントに送信されるためです。
オブジェクトがエラーとして Express に提供されると、このモジュールは、このオブジェクトについて可能な限り多くの情報を表示します。HTML、JSON、プレーンテキスト間のレスポンスのためにコンテンツネゴシエーションを使用して表示します。
Error
オブジェクトの場合、stack
プロパティによって提供される文字列が HTML/テキストレスポンスで返されます。Error
オブジェクトではない場合、util.inspect の結果が HTML/テキストレスポンスで返されます。これは、npm レジストリから入手できる Node.js モジュールです。インストールは、npm install
コマンド を使用して行われます。
$ npm install errorhandler
var errorhandler = require('errorhandler')
エラーを処理し、コンテンツネゴシエーションで応答するための新しいミドルウェアを作成します。
エラーハンドラーは、オプションオブジェクトでこれらのプロパティを受け入れます。
エラーとエラーの文字列表現で呼び出される関数を指定します。エラーを任意の場所に書き込むために使用できます。または、false
に設定して、レスポンスでエラーのみを送信することもできます。log(err, str, req, res)
として呼び出されます。ここで、err
は Error
オブジェクト、str
はエラーの文字列表現、req
はリクエストオブジェクト、res
はレスポンスオブジェクトです(注:この関数はレスポンスが書き込まれた*後*に呼び出されます)。
このオプションのデフォルト値は、process.env.NODE_ENV === 'test'
でない限り true
です。
可能な値
true
: console.error(str)
を使用してエラーをログに記録します。false
: レスポンスでエラーのみを送信します。connect
(この例では express
も使用できます)で、このミドルウェアを開発環境でのみエラーハンドラーとして追加する基本的な例。
var connect = require('connect')
var errorhandler = require('errorhandler')
var app = connect()
if (process.env.NODE_ENV === 'development') {
// only use in development
app.use(errorhandler())
}
開発中に、エラーを STDERR 以外の場所(たとえば、システム通知)に出力したい場合があります。
var connect = require('connect')
var errorhandler = require('errorhandler')
var notifier = require('node-notifier')
var app = connect()
if (process.env.NODE_ENV === 'development') {
// only use in development
app.use(errorhandler({ log: errorNotification }))
}
function errorNotification (err, str, req) {
var title = 'Error in ' + req.method + ' ' + req.url
notifier.notify({
title: title,
message: str
})
}