NestJS를 사용한 자바스크립트 프로젝트의 오류 처리 및 디버깅 방법

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 #JavaScript