문제의 발단은 react-native 개발환경을 구성하기 위해 expo를 설치하는 순간부터 시작되었다.
github에서 같이 프로젝트를 진행할 친구의 package.json과 yarn.lock을 pull받아 yarn init을 하였으나..
there appears to be trouble with your network connection. retrying
An unexpected error occurred: "https://registry.yarnpkg.com/rxjs/-/rxjs-5.5.12.tgz: ESOCKETTIMEDOUT".
네트워크도 잘 동작함에도 불구하고 계속 네트워크 연결 에러를 뿜으면서 설치가 진행되지 않았다.
다양한 원인이 존재하는 것 같다.
찾아본 결과 yarn config proxy 문제 일수도 있고
그저 단순히 네트워크가 느리거나 해당 패키지 파일이 너무 큰 경우일 수도 있다고 한다.
yarn config proxy를 확인하려면 아래 명령어를 cmd로 실행하면 된다.
yarn config get proxy
yarn config get https-proxy
yarn config proxy 문제인 경우
yarn config delete proxy
yarn config delete https-proxy
또는
yarn config set proxy null
yarn config set https-proxy null
네트워크가 느리거나 해당 패키지 파일이 너무 큰 경우
yarn install --network-timeout 600000
강제로 타임아웃되는 시간을 늘리는 방법이다.
실제로 package.json의 의존성 설치는 위의 방법으로 해결하였다.
there appears to be trouble with your network connection. retrying
An unexpected error occurred: "ENOENT: no such file or directory, open 'C:\Users\saehan\AppData\Local\Yarn\Cache\v4\npm-@expo-traveling-fastlane-darwin-1.10.0-d7d250fdcc485263d29c9a4e524370fc2c9be5e9\node_modules\@expo\traveling-fastlane-darwin\.yarn-metadata.json'".
yarn-metadata.json 파일을 찾지 못하는 것 같이 원인인 것 같다.
yarn-metadata.json에 문제가 있는 경우 yarn cache를 초기화 해주면 된다.
yarn cache clean
나의 경우엔 expo-cli를 글로벌로 설치할 때 yarn-metadata.json에 문제가 먼저 발생하여
yarn cache clean
을 통하여 yarn-metadata.json 문제를 해결하였더니
ESOCKETTIMEDOUT
문제가 발생하였다.
그래서 --network-timeout 600000
을 통하여 해결을 시도해 봤으나
여전히 문제가 해결되지 않았고 https://github.com/yarnpkg/yarn/issues/7171
결국 node와 npm의 버전을 업그레이드하고 yarn cache를 초기화하고 나서야 글로벌로 expo-cli를 설치할 수 있었다.
후에 이런 문제를 겪을 사람에게 도움이 될까 싶어 글로 남긴다.
※ 추가로 윈도우 유저 중 npm install -g yarn
으로 yarn을 설치했고
위의 방법이 먹히지 않는다면 yarn 홈페이지로 가서 msi설치파일을 통해 설치해볼 것을 추천한다.