(err, req, res, next)
| 2 | import type { ErrorRequestHandler, Request } from 'express' |
| 3 | |
| 4 | export const handler: ErrorRequestHandler = (err, req, res, next) => { |
| 5 | // normalize our PLC errors to server errors |
| 6 | if (PlcError.is(err)) { |
| 7 | err = ServerError.fromPlcError(err) |
| 8 | } |
| 9 | |
| 10 | if (ServerError.is(err) && err.status < 500) { |
| 11 | req.log.debug( |
| 12 | { error: { message: err.message, status: err.status } }, |
| 13 | 'handled server error', |
| 14 | ) |
| 15 | } else { |
| 16 | req.log.error(err, 'unexpected internal server error') |
| 17 | } |
| 18 | if (releaseUnhandledUpgrade(req)) { |
| 19 | return |
| 20 | } |
| 21 | |
| 22 | if (res.headersSent) { |
| 23 | return next(err) |
| 24 | } |
| 25 | if (ServerError.is(err)) { |
| 26 | return res.status(err.status).json({ message: err.message }) |
| 27 | } else { |
nothing calls this directly
no test coverage detected