문제
오랜만에 jest 테스트를 실행할 때 아래와 같은 오류가 발생함.
node:fs:391
const stats = binding.fstat(fd, false, undefined, true /* shouldNotThrow */);
^
Error: EBADF: bad file descriptor, fstat증상:
yarn test실행이 실패함.에러 확인 버전:
v25.9.0v24.15.0
원인
Node 24/25 환경에서 Yarn 4 + Jest 실행 조합 시, 파일 디스크립터 처리 관련 오류가 환경 의존적으로 발생할 수 있음.
프로젝트는
engines.node가 런타임 제약을 표현하지만, 실제 안정성은 실행 환경(Node 메이저 버전)에 영향을 받음.실제로 Node 26으로 올렸을 때 동일 명령에서 오류가 재현되지 않아, 런타임 버전 차이가 핵심 원인으로 판단됨.
해결
프로젝트 실행 Node 버전을 26 이상으로 통일함.
적용 내용:
package.json의engines.node를>=26.0.0으로 설정루트에
.nvmrc추가:26
사용 방법:
Windows (nvm for windows):
.nvmrc를 자동으로 읽어 적용하지 않으므로nvm install 26후nvm use 26을 수동 실행WSL (nvm): 프로젝트 폴더에서
nvm install후nvm use참고:
.nvmrc에 적힌 버전으로 실행하려면 아래처럼 한 줄로 입력하면 편리함nvm use && yarn test
의견
pnpm으로 쓰던 프로젝트는 node 버전이 24, 25 이든 별 문제가 없었는데...
이 프로젝트도 pnpm으로 바꿀까 고민이 되긴한다.. 😅
댓글 없음:
댓글 쓰기