Expo(로 만든 프로젝트)가 움직이지 않는다 "Error: Cannot find module '../../tools/PackageManager'"

소개



평상시는 React나 Vue를 골고루 쓰고 있는 프론트 엔지니어입니다만, 모바일에도 흥미가 나오고 있으므로 ReactNative에도 손을 내려고 생각 Expo를 인스톨 해 보았습니다.
하지만 시작 단계에서 제목 오류에 걸렸기 때문에 해결 방법을 공유합니다.

발생한 오류 내용



Expo에서 만든 프로젝트에서 yarn start를 할 때 발생했습니다.
yarn run v1.12.3
$ expo start
Starting project at /Volumes/workspace/AwesomeProject
Expo DevTools is running at http://localhost:19002
Opening DevTools in the browser... (press shift-d to disable)
internal/modules/cjs/loader.js:638
    throw err;
    ^

Error: Cannot find module '../../tools/PackageManager'
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:636:15)
    at Function.Module._load (internal/modules/cjs/loader.js:562:25)
    at Module.require (internal/modules/cjs/loader.js:690:17)
    at require (internal/modules/cjs/helpers.js:25:18)
    at Object.<anonymous> (/Volumes/workspace/AwesomeProject/node_modules/@react-native-community/cli/build/commands/install/install.js:10:46)
    at Module._compile (internal/modules/cjs/loader.js:776:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:787:10)
    at Module.load (internal/modules/cjs/loader.js:653:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
    at Function.Module._load (internal/modules/cjs/loader.js:585:3)

Metro Bundler process exited with code 1
Set EXPO_DEBUG=true in your env to view the stack trace.
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.

결론과 해결방법



Mac 볼륨을 대소문자로 구분했기 때문이었습니다.
Mac의 기본 볼륨을 사용하거나 새 파티션을 자르고 대소문자를 구분하지 않는 설정으로 만들면 피할 수 있습니다.


원인



Windows나 Mac은 디폴트의 볼륨 설정에서는 파일의 대문자와 소문자는 구별하지 않기 때문에, 아래와 같은 import도 가능합니다.

디렉토리 구성
./App.js
./packageManager.js

App.js
// ファイルは名は小文字"p"だが、importのファイル名は大文字”P"
import PackageManager from "./PackageManager.js";

그러나, 리눅스 등의 경우는 디폴트로 대문자 소문자를 구별하므로,
AWS 환경에 배포하면 많은 양의 오류가 발생합니다.
무슨 일이 일어날 수 있습니다.

그래서 맥 디스크 유틸리티에서 프로그래밍을 위해 대소문자를 구별하는 파티션을 만들고 그 안에 작업 공간을 만드는 습관으로 만들었기 때문에 이번 문제가 발생했습니다.

오류는 누가 발행하는가?



에러문의 도중에도 출력되고 있습니다만, @react-native-community/cli 가 출력하고 있습니다.
다만, @react-native-community/cli 자체의 수정은 2019/4 의 단계에서 병합되고 있습니다만, 병합된 타이밍에 메이저 버젼이 2.0 에 올랐습니다.
expo-cli에서 생성되는 package-lock.json을 확인하면 "@react-native-community/cli": "^1.2.1" 로 되어 있기 때문에, 메이저 버전 업에는 대응할 수 없어 버그가 남은 채로 하는 결과가 되고 있습니다.

expo/expo-cli -> expo/react-native -> @react-native-community/cli
라고 하는 순서로 참조하고 있으므로, expo/react-native가 @react-native-community/cli의 v2.0에 대응할 때까지 기장에 기다릴 수 있을 것 같습니다.

좋은 웹페이지 즐겨찾기