26 lines
714 B
TypeScript
26 lines
714 B
TypeScript
import { ErrorRequestHandler } from 'express'
|
|
import { isNaN, isObject, isString } from 'lodash-es'
|
|
|
|
export const errorHandler: ErrorRequestHandler = (err, req, res) => {
|
|
if (
|
|
isObject(err) &&
|
|
'status' in err &&
|
|
typeof err.status === 'number' &&
|
|
!isNaN(err.status)
|
|
) {
|
|
res.status(err?.status)
|
|
} else {
|
|
res.status(500)
|
|
}
|
|
|
|
res.setHeader('Content-Type', 'application/json')
|
|
|
|
if (req.app.get('env') === 'development') {
|
|
res.send(JSON.stringify(err, undefined, 2))
|
|
} else if (isObject(err) && 'message' in err && isString(err.message)) {
|
|
res.send(JSON.stringify({ message: err.message }))
|
|
} else {
|
|
res.send(JSON.stringify({ message: 'Internal Server Error' }))
|
|
}
|
|
}
|