34 lines
619 B
TypeScript
34 lines
619 B
TypeScript
import type { NextFunction, Request, Response } from 'express';
|
|
|
|
export class ApiError extends Error {
|
|
constructor(
|
|
public readonly status: number,
|
|
message: string,
|
|
) {
|
|
super(message);
|
|
}
|
|
}
|
|
|
|
export function errorHandler(
|
|
error: unknown,
|
|
_req: Request,
|
|
res: Response,
|
|
_next: NextFunction,
|
|
): void {
|
|
if (error instanceof ApiError) {
|
|
res.status(error.status).json({
|
|
code: error.status,
|
|
message: error.message,
|
|
data: null,
|
|
});
|
|
return;
|
|
}
|
|
|
|
console.error(error);
|
|
res.status(500).json({
|
|
code: 500,
|
|
message: 'Internal server error',
|
|
data: null,
|
|
});
|
|
}
|