2018-03-31 03:30:30 +08:00
|
|
|
import {RenderingMWs} from '../middlewares/RenderingMWs';
|
|
|
|
import {ErrorCodes, ErrorDTO} from '../../common/entities/Error';
|
|
|
|
import {Logger} from '../Logger';
|
2016-12-27 06:36:38 +08:00
|
|
|
import Request = Express.Request;
|
|
|
|
import Response = Express.Response;
|
2018-11-29 06:49:33 +08:00
|
|
|
import {Express} from 'express';
|
2016-03-26 18:19:10 +08:00
|
|
|
|
2016-05-09 23:04:56 +08:00
|
|
|
export class ErrorRouter {
|
2018-11-29 06:49:33 +08:00
|
|
|
public static route(app: Express) {
|
2016-03-26 18:19:10 +08:00
|
|
|
|
2017-06-11 04:32:56 +08:00
|
|
|
this.addApiErrorHandler(app);
|
|
|
|
this.addGenericHandler(app);
|
|
|
|
}
|
2016-03-26 18:19:10 +08:00
|
|
|
|
2018-11-29 06:49:33 +08:00
|
|
|
private static addApiErrorHandler(app: Express) {
|
2018-03-31 03:30:30 +08:00
|
|
|
app.use('/api/*',
|
2017-06-11 04:32:56 +08:00
|
|
|
RenderingMWs.renderError
|
|
|
|
);
|
2018-03-31 03:30:30 +08:00
|
|
|
}
|
2016-03-26 18:19:10 +08:00
|
|
|
|
2018-11-29 06:49:33 +08:00
|
|
|
private static addGenericHandler(app: Express) {
|
2017-06-11 04:32:56 +08:00
|
|
|
app.use((err: any, req: Request, res: Response, next: Function) => {
|
2018-03-31 03:30:30 +08:00
|
|
|
// Flush out the stack to the console
|
|
|
|
Logger.error('Unexpected error:');
|
2017-07-18 05:12:12 +08:00
|
|
|
console.error(err);
|
2018-03-31 03:30:30 +08:00
|
|
|
next(new ErrorDTO(ErrorCodes.SERVER_ERROR, 'Unknown server side error', err));
|
2017-06-11 04:32:56 +08:00
|
|
|
},
|
|
|
|
RenderingMWs.renderError
|
|
|
|
);
|
|
|
|
}
|
2016-03-26 18:19:10 +08:00
|
|
|
|
2017-06-11 04:32:56 +08:00
|
|
|
}
|