19 lines
755 B
TypeScript
19 lines
755 B
TypeScript
import { captureException } from "@sentry/node";
|
|
import { Request, Response, NextFunction } from 'express';
|
|
import log from "../../log";
|
|
import { extractErrMessage } from "../../util";
|
|
|
|
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}: ${extractErrMessage(err)}`);
|
|
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 });
|
|
}
|