Standardized error handler for rendering API responses with i18n. Automatically renders with support for JSON, XML, HTML and plain text.
npm install request-error-handler --save
For the error handler to work, you must emit an error with an array of requestErrors
. The format for requestErrors
is defined below as an array of RequestError
s.
var errorHandler = require('request-error-handler')
var express = require('express')
var app = module.exports = express()
function responder (req, res, error, stack) { /* Custom respond logic here */ }
var defaultLanguage = 'en'
var customMessages = {}
app.use(errorHandler(responder, defaultLanguage, customMessages))
Options
responder
Provide a custom error formatter with optional stack depending on environment (default: errorHandler.responder
)defaultLanguage
Override the default i18n language of English (default: en
)customMessages
Merge custom i18n messages with default messages (default: {}
, see interface below)The messages interface is as follows:
interface CustomMessages {
[type: string]: {
[keyword: string]: {
[language: string]: (error: RequestError) => string
}
}
}
The only restriction on errors that can be formatted using request-error-handler is that the error instance has an array of error objects on the requestErrors
property. Every error object MUST follow the following interface:
interface RequestError {
type: 'json' | 'form' | 'headers' | 'query' | 'xml' | string /* Comes with standard types built-in, but you can also provide your own */
keyword: string /* Keyword that failed validation */
message: string /* Merged with i18n when available */
id?: string /* A unique identifier for the instance of this error */
dataPath?: string /* Natural path to the error message (E.g. JSON Pointers when using JSON) */
data?: any /* The data that failed validation */
schema?: any /* The schema value that failed validation */
detail?: string /* Additional details about this specific error instance */
meta?: { [name: string]: string } /* Meta data from the error (XML validation provides a code, column, etc.) */
}
To automatically create a compatible error instance, use errorHandler.createError
and pass an array of errors with an option status
number.
Apache License 2.0