NestJS는 자바스크립트 런타임 환경에서 서버 사이드 애플리케이션을 개발하기 위한 프레임워크입니다. 그러나 프로그램을 개발하다보면 오류가 발생할 수 있습니다. 이러한 오류를 처리하고 디버깅하기 위해 몇 가지 유용한 방법들이 있습니다.
1. 예외 처리하기
NestJS에는 예외 처리를 위한 Exception 필터와 클래스가 내장되어 있습니다. 이를 사용하면 예외가 발생했을 때 프로그램이 예상대로 동작하게 할 수 있습니다. 다음은 예외 처리의 간단한 예제입니다.
import { Catch, ExceptionFilter, ArgumentsHost } from '@nestjs/common';
@Catch()
export class AllExceptionsFilter implements ExceptionFilter {
catch(exception: any, host: ArgumentsHost) {
const ctx = host.switchToHttp();
const response = ctx.getResponse();
const request = ctx.getRequest();
response.status(500).json({
statusCode: 500,
message: 'Internal server error',
timestamp: new Date().toISOString(),
});
}
}
이 예제에서는 모든 예외를 처리하는 필터를 작성했습니다. 예외가 발생하면 500 상태 코드와 함께 “Internal server error”라는 메시지를 반환하는 것을 볼 수 있습니다. 이러한 예외 처리기는 애플리케이션의 모든 부분에서 일관된 오류 처리를 제공합니다.
2. 로깅하기
프로그램을 디버깅하거나 오류를 추적하기 위해서는 로깅이 매우 유용합니다. NestJS에서는 다양한 로깅 옵션을 지원하며, 여러 가지 로그 메시지를 출력할 수 있습니다. Logger 모듈은 내장 모듈로 제공되며, 다음과 같이 사용할 수 있습니다.
import { Injectable, Logger } from '@nestjs/common';
@Injectable()
export class AppService {
private readonly logger = new Logger(AppService.name);
getData() {
this.logger.log('Fetching data...');
const data = [1, 2, 3, 4, 5];
this.logger.debug(`Data: ${data}`);
return data;
}
}
이 예제에서는 AppService 클래스에 Logger를 추가하여 데이터를 검색할 때 로그 메시지를 출력합니다. 로거를 사용하면 프로그램의 특정 부분에서 일어나는 일들을 추적하고, 필요한 경우 디버그 메시지를 출력할 수 있습니다.
3. 디버깅하기
NestJS에서 디버깅을 위해 일반적으로 사용되는 방법은 VS Code와 함께 디버그를 실행하는 것입니다. 디버그를 시작하기 위해 먼저 .vscode/launch.json
파일을 생성해야 합니다. 아래는 launch.json
파일의 예입니다.
{
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
"name": "NestJS Debug",
"args": ["${workspaceFolder}/src/main.ts"],
"cwd": "${workspaceFolder}",
"runtimeArgs": ["--nolazy", "-r", "ts-node/register"],
"sourceMaps": true,
"protocol": "inspector"
}
]
}
이제 디버그 모드에서 프로그램을 실행하고 중단점을 설정하거나 원하는 위치에서 프로그램의 상태를 검사할 수 있습니다. 디버거는 프로그램의 실행을 일시 중지하고 프로그램 상태를 검사하며, 오류가 발생한 곳을 찾는 데 도움이 됩니다.
마무리
NestJS를 사용한 자바스크립트 프로젝트에서의 오류 처리와 디버깅에 대해 알아보았습니다. 예외 처리기를 사용하여 예외를 적절하게 처리하고, 로깅을 통해 프로그램의 상태를 파악하며, 디버깅 모드를 사용하여 오류를 찾을 수 있습니다. 이러한 방법들을 적절히 활용하여 안정적인 애플리케이션을 개발할 수 있습니다.
References:
- NestJS 공식 문서: https://nestjs.com/
- NestJS 예외 필터 예제: https://docs.nestjs.com/exception-filters
- NestJS 로거 모듈 문서: https://docs.nestjs.com/techniques/logger
- NestJS 디버깅 가이드: https://docs.nestjs.com/recipes/debugging
#NestJS #JavaScript