Expo SDK 51 버전으로 설치 시 발생할 수 있는 문제 및 해결 방법을 설명합니다.
Expo 51 버전을 설치하는 이유
현제 Expo 에 최신 SDK 버전은 53 버전입니다. 53 버전에 xcode 최소 지원 버전은 16 이상인데 mac os 를 업데이트 하지 않은 저의 오랜 친구 맥북은 로컬에서 build 및 실행을 해볼수 없었습니다.
EAS build 를 이용하면 빌드를 해볼수 있겠지만, 무료 플랜을 사용하는 저로서는 대기 시간을 기다리는게 부담이 됩니다. 현제 xcode 15.4 버전을 사용하고 있는 제가 로컬에서 빌드를 해볼 수 있는 최대 버전인 expo 51 버전을 설치하기로 결정했습니다.
Development build
EAS build 를 사용하지 않고 로컬에서 development build 를 하기 위해서 가이드를 따라 합니다. 가이드는 expo development build local 가이드 에서 확인할수 있습니다.
문제 상황
시뮬레이터를 열고 앱을 확인하면 문제가 발생합니다. 에러 메시지는 다를 수 있지만 저의 경우에는 Error: Cannot find native module 'ExpoWebBrowser', js engine: hermes [Component Stack]
이런 메시지 였습니다.
저는 ExpoWebBrowser 를 설치한 적이 없기 때문에 이상다고 생각했습니다.
상황 분석
이 에러는 네이티브 모듈과 JavaScript 코드 간의 연결이 제대로 이루어지지 않았을때 발생할 수 있습니다. 실제로 ExpoWebBroswer 가 프로젝트 내의 존재 하지만, JavaScript 코드간의 연결이 되어 있지 않아서 발생했다고 유추해 볼 수 있습니다.
문제 해결
문제를 해결하기 위해서는 프로젝트를 클린업 해서 연결을 다시 해줄 필요가 있습니다.
development build 가이드를 로컬에서 실행했다면 프로젝트 내의 ios, android 폴더가 생겼을 것입니다. 프로젝트를 초기화 하기 위해서 node_modules 포함 해당 폴더 들을 제거합니다.
rm -rf node_modules ios android
yarn install
다시한번 빌드를 진행합니다. 이때 --clean 옵션을 주어 혹시나 남아있을 수 있는 캐시도 제거해줍니다.
npx expo prebuild --clean
이제 시뮬레이터를 다시 실행시킵니다.
npx expo run:ios
프로젝트가 정상적으로 실행되는걸 볼수 있습니다.