僅限開發時使用的錯誤處理中介軟體。
此中介軟體僅供開發環境使用,因為當發生錯誤時,傳遞給此模組的任何物件的完整錯誤堆疊追蹤和內部詳細資料將會傳送回用戶端。
當物件以錯誤的形式提供給 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
是回應物件(注意,此函式是在回應寫入之後呼叫的)。
此選項的預設值為 true
,除非 process.env.NODE_ENV === 'test'
。
可能的數值
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
})
}