nexi
Version:
Nodejs rails-ish port
28 lines (22 loc) • 900 B
JavaScript
const ApiError = require('../../../exceptions/api-error')
const errorHandlerMiddleware = ({ reporter, logger, config }) => {
// Assumes the shape of error looks like a NexiError. ApiError reads from error and serializes safely with defaults.
const errorHandler = (error, req, res, next) => {
if (config.stage === 'development') {
error.displayError = true
}
if (error.statusCode === 404) { return res.status(404).send(new ApiError(error).serialize())}
if (error.validationError) {
error.statusCode = 422
const response = new ApiError(error)
return res.status(422).send(response.serialize())
}
if (error.report !== false) {
reporter.error(error, req);
}
const response = new ApiError(error)
return res.status(response.statusCode).send(response.serialize())
}
return errorHandler
}
module.exports = errorHandlerMiddleware