작성
·
52
0
expo-location 때부터 모듈을 설치를 해도 해당 모듈이 없다는 메시지가 뜹니다.
eas build --platform android --profile development 명령어로 새로 빌드하면 되긴 하는데,
모듈 하나 설치할 때마다 빌드하면 5분씩 넘게 걸리는데 다른 방법이 있을까요?
아니면 제가 놓치고 있는게 있을까요?
답변 3
1
https://docs.expo.dev/workflow/overview/
expo 개발 프로세스가 많이 복잡한데요(개발 방식이 많습니다 ㅠㅠ)
위에 expo 공식문서에서 development loop 부분을 보시면은
네이티브 라이브러리 설치 시 eas build를 진행해야 된다고 나와있어요!
위에 개발 프로세스 부분을 잘 참고하시면 expo 공부하는 데 도움이 되실 거예요
expo에서 expo-
로 시작하는 라이브러리들이 공식 라이브러리이긴 하지만, 모든 라이브러리가 '빌드 없이 바로 사용 가능한' 것은 아닙니다.
expo 공식 라이브러리도 크게 두 가지로 나뉩니다.
1. 빌드 없이 expo Go에서 바로 쓸 수 있는 라이브러리
네이티브 코드를 직접 건드리지 않은, JS로만 구현된 패키지들이 여기에 해당해요.
Expo Go 앱에서 별도 빌드 없이 바로 사용 가능합니다.
2. 네이티브 모듈이 포함된 라이브러리
expo-location
, expo-camera
, expo-notifications
등은 네이티브 코드(안드로이드/아이폰의 고유 기능)를 사용해요.
이런 라이브러리는 Expo Go에서 바로 사용이 안 되고, eas build을 통해 네이티브 코드가 포함된 앱을 만들어야 제대로 동작합니다.
구분 방법
공식 문서에서 아래와 같은 안내가 있으면 거의 네이티브 모듈이 필요한 라이브러리라고 보면 돼요
app.json
의 plugins
설정 추가 안내
AndroidManifest.xml
또는 Info.plist
등 네이티브 설정 파일에 대한 수정 안내
pod install
(iOS) 같은 용어가 나온 경우
0
아래는 해당 에러 메시지이고, 위에는 node_modules 안에 있는 스크린샷입니다.
ERROR Error: Cannot find native module 'ExponentImagePicker', js engine: hermes
아래 스크린샷은 모듈 내부에서 빨간줄 뜨는 부분입니다.
AI 인턴님이 해주신 방법과, Hermes 비활성화 등 여러방법도 해보았습니다.
일단 빌드 매번 하셔야 하는게 맞습니다. 네이티브단 라이브러리라서요. 다만 eas로 하면 제한도 있고 오래 걸리므로 로컬 빌드를 시도해보시면 좋습니다 —local 뒤에 붙이시면 됩니다.
0
안녕하세요, 인프런 AI 인턴입니다. main님.
프로젝트에 새로운 모듈을 설치했을 때, 해당 모듈이 없다는 오류 메시지가 표시되는 것은 또는 빌드를 통해서 모듈 설치 상태를 반영해야 하는 경우, 몇 가지 체크해볼 사항들이 있습니다.
캐시 제거 및 클린 빌드:
eas build
로 새로 빌드하면 시간이 오래 걸리는 것을 줄이기 위해, node_modules
와 yarn.lock
또는 package-lock.json
파일을 삭제한 후 npm install
또는 yarn
명령어를 사용해 재설치를 시도해 보세요.npm cache clean --force
명령어로 캐시를 정리한 후 다시 시도할 수 있습니다.expo start -c:
expo start -c
또는 npm start -- -c
명령어를 통해 캐시를 비우고 애플리케이션을 다시 시작하는 방법도 효과적일 수 있습니다.낮은 wsl 통합:
모듈 설치 확인:
npm ls expo-location
명령어를 통해 모듈이 의존성 트리에 존재하는지, 설치된 버전이 올바른지 확인해볼 수 있습니다. 잘못된 버전이 설치된 경우 해당 모듈을 명확하게 언급하여 재설치할 수 있습니다.이 외에도 유사한 문제를 해결하는 과정에서 도움이 되는 질문을 참고해 보실 수 있습니다:
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
expo에서 공식으로 지원하는 라이브러리는 따로 빌드가 필요없다고 들었는데, 라이브러리 앞에 expo가 붙어있는건, 공식지원 한다는 뜻이 아닌가요? ㅠㅠ
expo-location도 결국에 다시 빌드해서 오류가 고쳐졌는데, expo-location도 네이티브 라이브러리 인가요?
헷갈리네요 ㅠㅠ