25 lines
669 B
TypeScript
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
|
|
}
|
|
}
|