Skip to content

Commit 1c1b636

Browse files
authored
Merge pull request #736 from dubemoyibe-star/fix/error-middleware-unknown-error-type
chore: replace err any with unknown and narrow safely
2 parents 2d8fb7b + 471aaf1 commit 1c1b636

1 file changed

Lines changed: 9 additions & 9 deletions

File tree

backend/src/middleware/error.middleware.ts

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
import type { Request, Response, NextFunction } from 'express';
22
import { Prisma } from '../generated/prisma/index.js';
3-
import { ZodError } from 'zod';
3+
import { ZodError, type ZodIssue } from 'zod';
44
import logger from '../logger.js';
55

66
/**
77
* Global error handler middleware
88
*/
99
export const errorHandler = (
10-
err: any,
10+
err: unknown,
1111
req: Request,
1212
res: Response,
1313
next: NextFunction
@@ -18,7 +18,7 @@ export const errorHandler = (
1818
if (err instanceof ZodError) {
1919
return res.status(400).json({
2020
error: 'Validation Error',
21-
details: err.issues.map((e: any) => ({
21+
details: err.issues.map((e: ZodIssue) => ({
2222
path: e.path.join('.'),
2323
message: e.message
2424
}))
@@ -28,26 +28,26 @@ export const errorHandler = (
2828
// Handle Prisma Errors
2929
if (err instanceof Prisma.PrismaClientKnownRequestError) {
3030
// Unique constraint violation
31-
if (err.code === 'P2002') {
32-
const target = (err.meta?.target as string[])?.join(', ') || 'field';
31+
if ((err as Prisma.PrismaClientKnownRequestError).code === 'P2002') {
32+
const target = ((err as Prisma.PrismaClientKnownRequestError).meta?.target as string[])?.join(', ') || 'field';
3333
return res.status(409).json({
3434
error: 'Conflict Error',
3535
message: `Record with this ${target} already exists.`
3636
});
3737
}
3838

3939
// Record not found
40-
if (err.code === 'P2025') {
40+
if ((err as Prisma.PrismaClientKnownRequestError).code === 'P2025') {
4141
return res.status(404).json({
4242
error: 'Not Found',
43-
message: err.message || 'The requested record was not found.'
43+
message: (err as Prisma.PrismaClientKnownRequestError).message || 'The requested record was not found.'
4444
});
4545
}
4646
}
4747

4848
// Default Error
49-
const statusCode = err.status || err.statusCode || 500;
50-
const message = err.message || 'Internal Server Error';
49+
const statusCode = (err instanceof Error && (err as any).status) || (err instanceof Error && (err as any).statusCode) || 500;
50+
const message = err instanceof Error ? err.message : 'Internal Server Error';
5151

5252
res.status(statusCode).json({
5353
error: statusCode === 500 ? 'Internal Server Error' : 'Error',

0 commit comments

Comments
 (0)