Files
feishin/server/middleware/error-handler.ts
T
2022-10-25 16:52:45 -07:00

36 lines
803 B
TypeScript

import { NextFunction, Request, Response } from 'express';
import { isJsonString } from '@utils/is-json-string';
export const errorHandler = (
err: any,
req: Request,
res: Response,
next: NextFunction
) => {
let message = '';
const trace = err.stack?.match(/at .* \(.*\)/g).map((e: string) => {
return e.replace(/\(|\)/g, '');
});
if (err.message) {
message = isJsonString(err.message)
? Array.isArray(JSON.parse(err.message))
? JSON.parse(err.message)[0].message // Handles errors sent from zod preprocess
: JSON.parse(err.message)
: err.message;
}
res.status(err.statusCode || 500).json({
error: {
message,
path: req.path,
trace,
},
response: 'Error',
statusCode: err.statusCode || 500,
});
next();
};