NestJS에서 @typescript-eslint/no-unused-vars 오류 해결 방법

2022. 12. 15. 11:30Backend Development/NestJS

반응형

NestJS 프로젝트를 개발하다 보면, @typescript-eslint/no-unused-vars 오류가 발생하는 경우가 있습니다. 특히, 특정 버전의 @typescript-eslint 패키지를 사용할 때 이 문제가 더 빈번히 나타날 수 있습니다. 이 글에서는 오류의 원인, 해결 방법, 그리고 관련 GitHub 이슈에서 제시된 최신 정보를 바탕으로 한 개선 사항을 다룹니다.


1. 오류 발생 상황

NestJS 프로젝트에서 다음과 같은 오류를 만날 수 있습니다:

[eslint] '@typescript-eslint/no-unused-vars' error: 'XXX' is declared but its value is never read.

예제 코드

import { Injectable } from '@nestjs/common';

@Injectable()
export class MyService {
  constructor(private readonly unusedDependency: string) {}
}

위 코드에서 unusedDependency는 의존성 주입을 위해 선언되었지만, 사용되지 않았기 때문에 ESLint에서 @typescript-eslint/no-unused-vars 규칙에 따라 경고를 출력합니다.


2. 원인 분석

이 문제는 다음 두 가지 요인으로 인해 발생할 수 있습니다:

  1. Lint 규칙의 기본 동작
    @typescript-eslint는 기본적으로 사용되지 않는 변수에 대해 경고를 출력합니다. 이는 코드 품질을 높이는 데 유용하지만, 의존성 주입과 같은 상황에서는 불필요한 경고가 발생할 수 있습니다.
  2. 버전 호환성 문제
    @typescript-eslint의 특정 버전(예: 5.34.0)에서 "can't resolve reference"와 같은 추가적인 문제가 보고되었습니다. 이는 버그로 확인되었으며, GitHub 이슈 #5525에 기록되어 있습니다.

3. 해결 방법

이 문제를 해결하기 위해 다음과 같은 방법을 사용할 수 있습니다.

3.1. 패키지 업데이트

관련 GitHub 이슈에 따르면, 이 문제는 @typescript-eslint의 최신 버전(5.35.1 이상)에서 해결되었습니다. 따라서, 모든 관련 패키지를 최신 버전으로 업데이트해야 합니다.

업데이트 명령어

npm install --save-dev @typescript-eslint/parser @typescript-eslint/eslint-plugin

설치 후 확인

package.json에서 다음과 같이 최신 버전을 확인하세요:

"devDependencies": {
  "@typescript-eslint/eslint-plugin": "^5.35.1",
  "@typescript-eslint/parser": "^5.35.1"
}

3.2. ESLint 설정 수정

Lint 규칙을 수정하여 특정 상황에서 오류를 무시하도록 설정할 수 있습니다.

.eslintrc.js 설정

module.exports = {
  rules: {
    '@typescript-eslint/no-unused-vars': ['error', { 'argsIgnorePattern': '^_' }],
  },
};
  • argsIgnorePattern 옵션
    매개변수 이름이 _로 시작하는 경우 경고를 무시합니다.

예제 코드

constructor(private readonly _unusedDependency: string) {}

3.3. 주석을 사용한 예외 처리

특정 코드 블록에만 적용하고 싶다면, ESLint 주석을 사용하여 경고를 비활성화할 수 있습니다.

예제 코드

// eslint-disable-next-line @typescript-eslint/no-unused-vars
constructor(private readonly unusedDependency: string) {}

4. 관련 GitHub 이슈 (#5525)

이슈 내용 요약:

  • @typescript-eslint 5.34.0 버전에서 "can't resolve reference"라는 메시지가 출력되는 문제가 보고되었습니다.
  • 이 문제는 5.35.1 버전에서 해결되었습니다.

해결된 내용:

  • 최신 버전(5.35.1 이상)으로 업데이트하면 오류가 발생하지 않습니다.
  • 관련 GitHub 이슈 링크: typescript-eslint/issues/5525

5. 모범 사례

  1. 정기적인 패키지 업데이트
    ESLint와 TypeScript는 자주 업데이트되므로, 최신 버전을 유지하여 호환성 문제를 줄이는 것이 중요합니다.
  2. 의미 있는 변수 이름 사용
    사용되지 않는 변수에 _ 접두사를 붙여 Lint 규칙을 준수하면서 코드의 명확성을 유지합니다.
  3. 필요 없는 의존성 제거
    사용하지 않는 의존성은 삭제하여 코드의 복잡성을 줄이고 유지보수성을 높입니다.

6. 마무리

@typescript-eslint/no-unused-vars 오류는 NestJS 프로젝트에서 자주 발생할 수 있는 문제이지만, 적절한 설정과 최신 패키지를 사용하면 쉽게 해결할 수 있습니다. 또한, GitHub 이슈를 통해 최신 정보를 확인하고 적용하는 습관은 개발 환경을 더욱 안정적으로 유지하는 데 큰 도움이 됩니다.

이 글을 통해 문제를 해결하고 더 나은 NestJS 개발 환경을 구축하시기 바랍니다. 궁금한 점은 댓글로 남겨주세요! 😊

반응형