From 53a5d94d1224dd457023164763f57335cc1ab95d Mon Sep 17 00:00:00 2001 From: "Umang G. Patel" <23169768+robonetphy@users.noreply.github.com> Date: Sun, 3 Jul 2022 12:09:08 +0530 Subject: [PATCH] backend hawk integration --- src/backend/app.ts | 30 +++++++++++++++++++++--------- 1 file changed, 21 insertions(+), 9 deletions(-) diff --git a/src/backend/app.ts b/src/backend/app.ts index d14ee0d..de5d72c 100644 --- a/src/backend/app.ts +++ b/src/backend/app.ts @@ -1,4 +1,4 @@ -import express, { Request, Response } from 'express'; +import express, { NextFunction, Request, Response } from 'express'; import path from 'path'; import cookieParser from 'cookie-parser'; import morgan from 'morgan'; @@ -7,11 +7,15 @@ import routes from './routes'; import HttpException from './exceptions/httpException'; import * as dotenv from 'dotenv'; import config from 'config'; +import HawkCatcher from '@hawk.so/nodejs'; + dotenv.config(); const app = express(); const localConfig = rcParser.getConfiguration(); +HawkCatcher.init(process.env.EXPRESS_NODEJS_HAWK_TOKEN || ''); + app.locals.config = localConfig; // view engine setup app.set('views', path.join(__dirname, './', 'views')); @@ -27,15 +31,23 @@ app.use('/uploads', express.static(config.get('uploads'))); app.use('/', routes); -// error handler -app.use(function (err: HttpException, req: Request, res: Response) { - // set locals, only providing error in development - res.locals.message = err.message; - res.locals.error = req.app.get('env') === 'development' ? err : {}; - // render the error page - res.status(err.status || 500); - res.render('error'); +// error handler +app.use(function (err: unknown, req: Request, res: Response, next: NextFunction) { + // send error to hawk server. + if (err instanceof Error) { + HawkCatcher.send(err); + } + if (err instanceof HttpException) { + // set locals, only providing error in development + res.locals.message = err.message; + res.locals.error = req.app.get('env') === 'development' ? err : {}; + // render the error page + res.status(err.status || 500); + res.render('error'); + } + next(err); }); + export default app;