25 lines
669 B
TypeScript

import { Logger } from '@rondo.dev/logger'
import { ErrorHandler } from './ErrorHandler'
import { Middleware } from './Middleware'
export class ErrorPageHandler implements Middleware {
constructor(readonly logger: Logger) {}
handle: ErrorHandler = (err, req, res, next) => {
this.logger.error(
'%s An error occurred: %s',
req.correlationId, err.stack)
// TODO Show an error page!
const statusCode = this.getStatus(err)
res.status(statusCode)
res.end('An error occurred')
}
protected getStatus(err: Error): number {
if (typeof (err as any).status === 'number') {
return (err as any).status
}
return 500
}
}