注意
本页面根据 errorhandler README 生成。errorhandler
仅在开发环境中使用的错误处理中间件。
此中间件仅适用于开发环境,因为当错误发生时,完整的错误堆栈跟踪和任何传递给此模块的对象的内部详情将被发送回客户端。
当向 Express 提供一个对象作为错误时,此模块将尽可能多地显示有关此对象的信息,并会通过内容协商在 HTML、JSON 和纯文本之间选择响应格式。
- 当对象是标准
Error
对象时,stack
属性提供的字符串将在 HTML/文本响应中返回。 - 当对象是非
Error
对象时,util.inspect 的结果将在 HTML/文本响应中返回。 - 对于 JSON 响应,结果将是一个对象,其中包含响应中对象的所有可枚举属性。
安装
这是一个通过 npm 注册表 提供的 Node.js 模块。安装使用 npm install
命令完成。
$ npm install errorhandler
API
var errorhandler = require('errorhandler')
errorhandler(options)
创建新的中间件以处理错误并根据内容协商进行响应。
选项
错误处理器接受选项对象中的以下属性。
log
提供一个函数,该函数将以错误和错误的字符串表示形式被调用。可用于将错误写入任何所需位置,或设置为 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()
// assumes NODE_ENV is set by the user
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()
// assumes NODE_ENV is set by the user
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
})
}