18 lines
696 B
TypeScript
18 lines
696 B
TypeScript
|
import { captureException } from "@sentry/node";
|
||
|
import { Request, Response, NextFunction } from 'express';
|
||
|
import log from "../../log";
|
||
|
|
||
|
export default function errorHandler(err: Error, req: Request, res: Response, next: NextFunction) {
|
||
|
// Non-error responses, or something else handled & responded
|
||
|
if (!err || res.headersSent) {
|
||
|
next(err);
|
||
|
}
|
||
|
|
||
|
captureException(err);
|
||
|
log.error(`Uncaught ${err.name} exception at ${req.method} ${req.path}: ${err.message}`);
|
||
|
log.debug(`Query: ${JSON.stringify(req.query, null, 2)}`);
|
||
|
log.debug(`Body: ${JSON.stringify(req.body, null, 2)}`);
|
||
|
log.debug(`Full stacktrace:\n${err.stack}`);
|
||
|
return res.status(500).json({ error: err.message });
|
||
|
}
|