2026년 5월 21일 목요일

Error: EBADF: bad file descriptor, fstat - yarn 프로젝트에서 jest 실행할 때 오류

yarn 프로젝트에서 jest 실행할 때 오류

문제

  • 오랜만에 jest 테스트를 실행할 때 아래와 같은 오류가 발생함.

node:fs:391
const stats = binding.fstat(fd, false, undefined, true /* shouldNotThrow */);
^
Error: EBADF: bad file descriptor, fstat
  • 증상: yarn test 실행이 실패함.

  • 에러 확인 버전:

    • v25.9.0

    • v24.15.0

원인

  • Node 24/25 환경에서 Yarn 4 + Jest 실행 조합 시, 파일 디스크립터 처리 관련 오류가 환경 의존적으로 발생할 수 있음.

  • 프로젝트는 engines.node가 런타임 제약을 표현하지만, 실제 안정성은 실행 환경(Node 메이저 버전)에 영향을 받음.

  • 실제로 Node 26으로 올렸을 때 동일 명령에서 오류가 재현되지 않아, 런타임 버전 차이가 핵심 원인으로 판단됨.

해결

  • 프로젝트 실행 Node 버전을 26 이상으로 통일함.

  • 적용 내용:

    • package.jsonengines.node>=26.0.0으로 설정

    • 루트에 .nvmrc 추가: 26

  • 사용 방법:

    • Windows (nvm for windows): .nvmrc를 자동으로 읽어 적용하지 않으므로 nvm install 26nvm use 26을 수동 실행

    • WSL (nvm): 프로젝트 폴더에서 nvm installnvm use

    • 참고: .nvmrc에 적힌 버전으로 실행하려면 아래처럼 한 줄로 입력하면 편리함

      nvm use && yarn test

의견

pnpm으로 쓰던 프로젝트는 node 버전이 24, 25 이든 별 문제가 없었는데...

이 프로젝트도 pnpm으로 바꿀까 고민이 되긴한다.. 😅