JavaScript 패키지 관리자 - Yarn 1 프로젝트에서 'cheerio' 모듈 누락 오류 해결 방법

카테고리

프로그래밍/소프트웨어 개발

서브카테고리

개발 툴

대상자

Yarn 1을 사용하는 JavaScript 프로젝트 개발자, Jest와 Enzyme 테스트 도구 사용자

핵심 요약

  • Yarn 1에서 cheerio@1.1.0enzyme@3.11.0의 버전 불일치로 Cannot find module 'cheerio' 오류 발생
  • package.jsonresolutions 필드에 cheerio@1.0.0-rc.3 강제 지정 필요
  • yarn install 실행 후 yarn.lock 파일에서 cheerio 버전 확인 및 테스트 재실행

섹션별 세부 요약

1. 문제 현상

  • yarn test 실행 시 cheerio/lib/utils 모듈 누락 오류 발생
  • 오류 스택: node_modules/enzyme/build/Utils.js에서 모듈 찾기 실패
  • jest 설정에서 testEnvironment: jsdom 사용

2. 의존성 충돌 원인

  • enzyme@3.11.0cheerio@1.0.0-rc.3만 호환
  • cheerio@1.1.0 설치 시 deep imports 지원 중단으로 오류 발생
  • yarn.lock 파일에서 cheerio@1.1.0enzyme 의존성으로 자동 선택됨

3. 해결 방법

  • package.jsonresolutions 필드 추가:

```json

"resolutions": {"enzyme/cheerio": "1.0.0-rc.3"}

```

  • node_modules 폴더 삭제 및 yarn cache 클리어 후 yarn install 실행
  • yarn.lock 파일에서 cheerio@1.0.0-rc.3 설치 확인

4. 추가 확인 사항

  • yarn info 명령으로 devDependenciescheerio 자동 설치 확인
  • enzyme 설치 시 cheerio@1.0.0-rc.3가 직접 의존성으로 포함됨

결론

  • *resolutions 필드를 통해 cheerio@1.0.0-rc.3 강제 지정 후 yarn install 실행하여 의존성 충돌 해결**
  • yarn.lock 파일에서 cheerio 버전이 정확히 1.0.0-rc.3인지 확인
  • enzyme 설치 시 cheerio는 자동으로 포함되므로 devDependencies에 별도 추가 필요 없음