34 lines
684 B
TypeScript
34 lines
684 B
TypeScript
import type { Request, Response, NextFunction } from 'express';
|
|
|
|
export class AppError extends Error {
|
|
constructor(
|
|
public statusCode: number,
|
|
public message: string,
|
|
public isOperational = true
|
|
) {
|
|
super(message);
|
|
Object.setPrototypeOf(this, AppError.prototype);
|
|
}
|
|
}
|
|
|
|
export function errorMiddleware(
|
|
err: Error,
|
|
req: Request,
|
|
res: Response,
|
|
next: NextFunction
|
|
) {
|
|
if (err instanceof AppError) {
|
|
return res.status(err.statusCode).json({
|
|
status: 'error',
|
|
message: err.message,
|
|
});
|
|
}
|
|
|
|
console.error('Unhandled error:', err);
|
|
|
|
return res.status(500).json({
|
|
status: 'error',
|
|
message: 'Internal server error',
|
|
});
|
|
}
|