仅限开发的错误处理中间件。
此中间件仅用于开发环境,因为当发生错误时,完整的错误堆栈跟踪和传递给此模块的任何对象的内部详细信息 将被发送回客户端。
当一个对象作为错误提供给 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
})
}