1. src/common/filters/error.exception.ts 파일 생성
error.exceptions.ts 파일을 만들고 적절한 코드를 붙여넣습니다.
- 1. 개발 중 발생하는 오류를 분기하여 처리하고 개발 서버에서만 확인하도록 console.log()로 오류 값을 표시합니다.
- 2. 오류 메시지는 String과 Object 두 가지 타입으로 나오므로 타입을 확인하고 분기를 처리한다.
import {
ExceptionFilter,
Catch,
ArgumentsHost,
HttpException,
} from '@nestjs/common';
import { Response, Request } from 'express';
@Catch()
export class ErrorExceptionFilter implements ExceptionFilter {
catch(exception: unknown, host: ArgumentsHost) {
const ctx = host.switchToHttp();
const response = ctx.getResponse<Response>();
const request = ctx.getRequest<Request>();
const status =
exception instanceof HttpException ? exception.getStatus() : 500;
// 1. dev 개발서버 실행 일 때 에러 발생 시 로그 출력
if (process.env.NODE_ENV === 'dev') {
console.log('Error : ' + exception);
}
// 2. 에러 메시지가 String, Object 두 형태로 전달되기 때문에 분기 처리
const error =
exception instanceof HttpException
? (exception.getResponse() as
| string
| { error: string; statusCode: number; message: string | string() })
: 'Internal server error';
if (typeof error === 'string') {
response.status(status).json({
result: false,
statusCode: status,
method: request.method,
path: request.url,
error,
});
} else {
response.status(status).json({
result: false,
statusCode: status,
method: request.method,
path: request.url,
...error,
});
}
}
}