Wraps errors in micro
services Boom
errors.
Example Responses
{
"error": "Unauthorized",
"message": "Not authenticated",
"statusCode": 401
}
{
"data": {
"reason": "Username is wrong"
},
"error": "Unauthorized",
"message": "Not authenticated",
"statusCode": 401
}
npm install --save micro-boom
Or even better
yarn add micro-boom
const { handleErrors, createError } = require('micro-boom')
module.exports = handleErrors(async function (req, res) {
throw createError(401, 'Not authenticated', {
reason: 'Bad password'
})
})
Catches error from an async function, wraps them in a Boom error object and generates a JSON response.
The status code of an error is determined by three factors, in order:
- Status code is set to
err.output.statusCode
- If not set, error is inferred from
res.statusCode
- Default to HTTP 500 (also defaults to HTTP 500 if status is < 400)
๐จ TAKE NOTE ๐จ
All HTTP 500 errors have their user provided message removed for security reasons.
Parameters
fn
Function Async function, your normalmicro
logic.dump
Boolean Optional. Dumpserr.stack
tostderr
if true
Examples
const { handleErrors } = require('micro-boom')
// Returns HTTP 500
module.exports = handleErrors(async function (req, res) {
throw Error('Uh-oh, something bad happened.')
})
const { handleErrors } = require('micro-boom')
// Returns HTTP 401
module.exports = handleErrors(async function (req, res) {
res.statusCode = 401
throw Error('Unauthorized')
})
Returns an async Function.
Alias for Boom#create(statusCode, [message], [data])
.
Parameters
statusCode
Number HTTP status code, must be >= 400message
String An optional error message.data
[Any] Some optional error metadata, serialized withJSON.stringify
.
Examples
const { handleErrors, createError } = require('micro-boom')
// Message defaults to what corresponds to the HTTP error code
module.exports = handleErrors(async function (req, res) {
throw createError(500)
})
const { handleErrors, createError } = require('micro-boom')
// HTTP 401: Unauthorized
module.exports = handleErrors(async function (req, res) {
throw createError(401, 'Unauthorized')
})
const { handleErrors, createError } = require('micro-boom')
// HTTP 401: Unauthorized with metadata,
// set in `.data` of the response.
module.exports = handleErrors(async function (req, res) {
throw createError(401, 'Unauthorized', {
reason: 'Bad password',
foo: 'bar'
})
})
Returns an async Function.