본문으로 건너뛰기
← Wiki

expo SDK 업그레이드 후 의존성 문제

트러블 슈팅

문제 상황

아이폰 기기의 expo GO 버전을 맞추기 위해 expo SDK를 52 > 54로 올렸다. 앱은 실행이 잘 되지만, 웹 빌드가 계속 실패한다.

원인

현재 모노레포 구조가 원인.

pnpm은 원래 중첩된 구조의 node_modules를 가지지만, expo를 모노레포에서 관리하기 위해 .npmrc에 node-linker=hoisting을 설정해 루트 node_modules에서 의존성을 관리하도록 함.

웹의 next는 peerDependencies로 react를 가지고 있음 → react를 node_modules에서 찾는데, 루트에 react@19가 있기에 이것을 먼저 찾음

react@18을 사용하는 다른 패키지와 next가 의존하는 react@19가 충돌 발생

해결 방법

루트에서 react@18을 설치함 → 루트 node_modules/react에는 18버전만 설치가 됨 & apps/app/node_modules에 19버전이 설치가 됨 → next는 루트에 있는 18버전을 찾음

expo 패키지는 react를 명시해서 설치하고 있기 때문에 문제가 발생하지 않음