모듈 resolve 과정에서 에러가 있습니다.
Einere opened this issue · 4 comments
현재 RN 프로젝트에서 fxjs2 패키지를 이용중입니다. 개발용으로 앱을 띄우는 과정에서는 별다른 문제가 없지만, APK를 만드는 과정에서 자꾸 모듈 에러가 발생합니다.
// 프로젝트 번들링 명령어
react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res
// 디버그 APK 생성 명령어
./gradlew assembleDebug
// 릴리즈 APK 생성 명령어
react-native run-android --variant=release
error Unable to resolve module `../.internal/baseApplyEach.js` from `node_modules/fxjs2/Strict/applyEach.js`:
None of these files exist:
* node_modules/fxjs2/.internal/baseApplyEach.js(.native|.android.js|.native.js|.js|.android.json|.native.json|.json|.android.ts|.native.ts|.ts|.android.tsx|.native.tsx|.tsx|.android.svg|.native.svg|.svg)
* node_modules/fxjs2/.internal/baseApplyEach.js/index(.native|.android.js|.native.js|.js|.android.json|.native.json|.json|.android.ts|.native.ts|.ts|.android.tsx|.native.tsx|.tsx|.android.svg|.native.svg|.svg). Run CLI with --verbose flag for more details.
Error: Unable to resolve module `../.internal/baseApplyEach.js` from `node_modules/fxjs2/Strict/applyEach.js`:
혹시나 싶어 다음 명령어로 기본 프로젝트를 생성해서 fxjs2 패키지 설치 후 APK를 만들어 봤는데, 위와 같은 에러가 발생했습니다.
npx react-native init AwesomeProject
node_modules/fxjs2 내부를 까보면 실제로 파일이 없는 것도 아니라서 되게 당황스럽네요..
최근에 다양한 Node.js 버전과 commonjs, esm 환경에서 모두 사용할 수 있도록 변경되었고 fxjs 패키지에 적용되어 있습니다. fxjs2는 지원이 종료될(deprecated) 예정입니다. fxjs 패키지도 동일한 문제가 발생하는지 확인해 주시면 감사하겠습니다.
RN 기본 템플릿에서 다음과 같이 트러블 슈팅을 진행했습니다.
- 기본 프로젝트 생성
npx react-native init AwesomeProject
-
fxjs 설치 및 fxjs를 사용하는 코드를 추가
-
Metro 실행
react-native start
- 안드로이드 실행
react-native run-android
이 때는 정상적으로 실행됩니다.
- 재부팅 혹은 IDE 껏다 켜기
참고로 저는 맥OS이며, IDE로는 WebStorm을 사용하고 있습니다.
- Metro 실행 및 안드로이드 실행
번들링 실패
[Wed Nov 18 2020 13:12:30.905] BUNDLE ./index.js
error: Error: Unable to resolve module `../.internal/baseApplyEach.js` from `node_modules/fxjs/cjs/Strict/applyEach.js`:
None of these files exist:
* node_modules/fxjs/cjs/.internal/baseApplyEach.js(.native|.android.js|.native.js|.js|.android.json|.native.json|.json|.android.ts|.native.ts|.ts|.android.tsx|.native.tsx|.tsx|.android.svg|.native.svg|.svg)
* node_modules/fxjs/cjs/.internal/baseApplyEach.js/index(.native|.android.js|.native.js|.js|.android.json|.native.json|.json|.android.ts|.native.ts|.ts|.android.tsx|.native.tsx|.tsx|.android.svg|.native.svg|.svg)
이렇게 빌드 실패가 뜬 경우, npm 혹은 yarn을 이용해서 fxjs를 제거하고 다시 추가하면 또 정상적으로 실행됩니다.
번들 에러의 원인이 fxjs에 있는지, 혹은 RN에 있는지는 잘 모르겠습니다.. 🤔
facebook/metro#376
Metro bundler에서 '.'으로 시작하는 파일이나 폴더를 잘 읽지 못하는 문제가 있는 것 같네요.
일반 사용자들이 직접 import해서 사용할 일이 없는 함수들을 구분하기 위해 '.internal'이라는 폴더명이 만들어 졌는데요,
react-native에서 이런 이슈가 있다면 폴더명을 변경하도록 하겠습니다. 감사합니다.