Yarn 1 환경에서 Jest와 Enzyme 사용 시 Cheerio 모듈 오류 해결 가이드
🤖 AI 추천
Yarn 1을 사용하여 Jest와 Enzyme으로 프론트엔드 테스트를 수행하는 개발자에게 유용한 가이드입니다. 특히 라이브러리 간의 버전 충돌로 인해 발생하는 문제 해결 경험을 쌓고 싶은 미들 레벨 이상의 개발자에게 추천합니다.
🔖 주요 키워드
핵심 기술
이 가이드라인은 Yarn 1 패키지 매니저를 사용하는 프로젝트에서 Jest 및 Enzyme 라이브러리 사용 시 발생하는 'Cannot find module 'cheerio/lib/utils'' 오류의 근본 원인인 Cheerio 모듈 버전 충돌을 해결하는 방법을 제시합니다.
기술적 세부사항
- 문제 발생 시나리오: Yarn 1으로 관리되는 프로젝트에서
yarn test
실행 시 Jest가 Enzyme의 Cheerio 의존성을 찾지 못하여 테스트 실행이 실패합니다. - 오류 메시지:
Cannot find module 'cheerio/lib/utils' from 'node_modules/enzyme/build/Utils.js'
- 근본 원인: Enzyme 라이브러리는 특정 버전의 Cheerio (
1.0.0-rc.3
이하)만 지원하지만, 프로젝트에 더 최신 버전의 Cheerio (1.0.0-rc.3
초과)가 설치되어 의존성 충돌이 발생합니다. - 해결 방안:
package.json
파일에resolutions
필드를 추가하여 Enzyme이 사용할 Cheerio 버전을 명시적으로1.0.0-rc.3
으로 강제합니다.
json "resolutions": { "enzyme/cheerio": "1.0.0-rc.3" }
- 검증:
resolutions
적용 전후yarn.lock
파일을 비교하여 Cheerio의 실제 설치 버전을 확인하고,yarn test
를 다시 실행하여 오류가 해결되었는지 검증합니다. - 추가 조치:
node_modules
폴더를 삭제하고yarn cache clean
을 실행한 후yarn install
을 다시 실행하여 의존성을 재설치합니다. - Enzyme 의존성: Enzyme 설치 시 Cheerio는 자동으로 설치되는 의존성이므로, 별도로
devDependencies
에 추가할 필요가 없습니다.
개발 임팩트
이 해결책을 통해 Jest와 Enzyme을 사용하는 개발 환경에서 발생할 수 있는 흔한 버전 충돌 문제를 효과적으로 해결할 수 있습니다. 이를 통해 테스트 실행의 안정성을 확보하고, 개발 생산성을 향상시킬 수 있습니다.
커뮤니티 반응
(제시된 내용에 구체적인 커뮤니티 반응 언급 없음)
📚 관련 자료
enzyme
Enzyme은 React 컴포넌트 테스트를 위한 유틸리티 라이브러리로, Cheerio를 내부적으로 의존하고 있어 본 문제의 핵심 라이브러리입니다.
관련도: 95%
jest
JavaScript 테스트 프레임워크로, Enzyme과 함께 사용되어 테스트를 실행하는 과정에서 본 오류가 발생합니다. Jest의 테스트 환경 설정과 의존성 해결 메커니즘이 관련됩니다.
관련도: 90%
yarn
Yarn은 Node.js 패키지 매니저로, `resolutions` 기능을 통해 라이브러리 간의 의존성 버전을 명시적으로 관리하는 방법을 제공합니다. 본 문제 해결의 핵심 메커니즘이 Yarn에 의해 제공됩니다.
관련도: 85%