강의

멘토링

로드맵

Inflearn brand logo image

인프런 커뮤니티 질문&답변

main님의 프로필 이미지
main

작성한 질문수

React Native with Expo: 제로초에게 제대로 배우기

이미지 선택하기, 촬영하기, 저장하기

새로운 모듈 설치시 모듈 없음.

작성

·

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 공부하는 데 도움이 되실 거예요

main님의 프로필 이미지
main
질문자

expo에서 공식으로 지원하는 라이브러리는 따로 빌드가 필요없다고 들었는데, 라이브러리 앞에 expo가 붙어있는건, 공식지원 한다는 뜻이 아닌가요? ㅠㅠ
expo-location도 결국에 다시 빌드해서 오류가 고쳐졌는데, expo-location도 네이티브 라이브러리 인가요?

헷갈리네요 ㅠㅠ

expo에서 expo-로 시작하는 라이브러리들이 공식 라이브러리이긴 하지만, 모든 라이브러리가 '빌드 없이 바로 사용 가능한' 것은 아닙니다.
expo 공식 라이브러리도 크게 두 가지로 나뉩니다.

1. 빌드 없이 expo Go에서 바로 쓸 수 있는 라이브러리

  • 네이티브 코드를 직접 건드리지 않은, JS로만 구현된 패키지들이 여기에 해당해요.

     

  • Expo Go 앱에서 별도 빌드 없이 바로 사용 가능합니다.

2. 네이티브 모듈이 포함된 라이브러리

  • expo-location, expo-camera, expo-notifications 등은 네이티브 코드(안드로이드/아이폰의 고유 기능)를 사용해요.

  • 이런 라이브러리는 Expo Go에서 바로 사용이 안 되고, eas build을 통해 네이티브 코드가 포함된 앱을 만들어야 제대로 동작합니다.

구분 방법

공식 문서에서 아래와 같은 안내가 있으면 거의 네이티브 모듈이 필요한 라이브러리라고 보면 돼요

  • app.jsonplugins 설정 추가 안내

  • AndroidManifest.xml 또는 Info.plist 등 네이티브 설정 파일에 대한 수정 안내

  • pod install(iOS) 같은 용어가 나온 경우

     

main님의 프로필 이미지
main
질문자

와.. 이런 차이군요!
답변 정말 너무 감사드립니다!
구분방법까지.. 안그래도 너무 답답했는데
깔끔하게 해소가 되었어요!

0

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

정확히 에러메시지가 뭔가요? 설치 후 node_modules 안에 들어 있나요?

main님의 프로필 이미지
main
질문자

image.png

아래는 해당 에러 메시지이고, 위에는 node_modules 안에 있는 스크린샷입니다.

ERROR Error: Cannot find native module 'ExponentImagePicker', js engine: hermes

 

아래 스크린샷은 모듈 내부에서 빨간줄 뜨는 부분입니다.

image.png

 

AI 인턴님이 해주신 방법과, Hermes 비활성화 등 여러방법도 해보았습니다.

 

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

일단 빌드 매번 하셔야 하는게 맞습니다. 네이티브단 라이브러리라서요. 다만 eas로 하면 제한도 있고 오래 걸리므로 로컬 빌드를 시도해보시면 좋습니다 —local 뒤에 붙이시면 됩니다.

main님의 프로필 이미지
main
질문자

네! 답변 감사합니다 : )

0

안녕하세요, 인프런 AI 인턴입니다. main님.

프로젝트에 새로운 모듈을 설치했을 때, 해당 모듈이 없다는 오류 메시지가 표시되는 것은 또는 빌드를 통해서 모듈 설치 상태를 반영해야 하는 경우, 몇 가지 체크해볼 사항들이 있습니다.

  1. 캐시 제거 및 클린 빌드:

    • 모듈 설치 후 eas build로 새로 빌드하면 시간이 오래 걸리는 것을 줄이기 위해, node_modulesyarn.lock 또는 package-lock.json 파일을 삭제한 후 npm install 또는 yarn 명령어를 사용해 재설치를 시도해 보세요.
    • 필요한 경우 npm cache clean --force 명령어로 캐시를 정리한 후 다시 시도할 수 있습니다.
  2. expo start -c:

    • 새로 설치한 모듈을 바로 반영하기 위해 expo start -c 또는 npm start -- -c 명령어를 통해 캐시를 비우고 애플리케이션을 다시 시작하는 방법도 효과적일 수 있습니다.
  3. 낮은 wsl 통합:

    • 개발 환경이 Windows일 경우, WSL(Windows Subsystem for Linux)을 사용해 빌드를 수행하는 것 역시 하나의 방법입니다. WSL을 통해 Linux 환경에서 개발 프로젝트를 관리하면, 종종 모듈 관련 문제를 해결할 수 있습니다.
  4. 모듈 설치 확인:

    • npm ls expo-location 명령어를 통해 모듈이 의존성 트리에 존재하는지, 설치된 버전이 올바른지 확인해볼 수 있습니다. 잘못된 버전이 설치된 경우 해당 모듈을 명확하게 언급하여 재설치할 수 있습니다.

이 외에도 유사한 문제를 해결하는 과정에서 도움이 되는 질문을 참고해 보실 수 있습니다:

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

main님의 프로필 이미지
main

작성한 질문수

질문하기