[React Native] 개발환경 재설정 중 발생한 오류

aborile·2023년 8월 28일
1

삽질기

목록 보기
6/9
post-thumbnail

6개월 전에 방치해 둔... 노트북에서 프로젝트를 실행해야 하는 상황이 발생했다. 마지막으로 확인한지 6개월밖에 안 지났으니 금방 끝나겠지 싶었는데 생각보다 자잘하게 오류가 계속 발생했다. 오늘은 개발환경 재설정 과정에서 발생했던 오류에 대해 정리해 보겠다.

참고:
방치하기 전인 6개월 전 환경은 다음과 같다.

  • OS: Monterey
  • XCode: v13.x
  • XCode를 비롯해 Android Studio, watchman, rbenv 등 기본적인 RN 빌드를 위한 준비는 다 되어 있던 상황

XCode 업데이트 실패

드디어 야심차게 OS를 Ventura로 업데이트 하고 XCode를 업데이트 하려는 찰나, XCode가 스토어에서 업데이트 되지 않았다. 업데이트를 하려면 계속 'iTunes 로그인'을 하라는 문구와 함께 로그인 모달이 떴으며, 로그인을 아무리 반복해서 해봐도 업데이트 할 수 없다는 문구만 떴다.

스토어를 통한 업데이트는 포기하고 공홈에서 다운로드 링크를 찾아 다운로드 받았으나... 스토어와 버전이 꼬이고 (앞으로 평생 직접 다운로드해서 업데이트를 해야하는가...?) 빌드 에러가 발생하는 등 자잘하게 계속 꼬일 거 같아서 XCode를 아예 삭제한 후 재설치를 진행했다. 😇 (심지어 첫 시도에 계속 다운로드 후 마무리가 안 돼서 취소하고 다시 하느라 설치에만 2시간 정도 걸린 것 같다...)

node: No such file or directory

XCode 재설치 후 드디어 빌드를 실행해봤더니 "Command PhaseScriptExecution failed with a nonzero exit code" 에러가 발생하며 빌드되지 않았다.

XCode 에러 로그를 자세히 확인해 보면 "env: node: No such file or directory"라는 문구를 볼 수 있었다. XCode가 node를 찾을 수 없어서 발생한 에러로, 다음 명령어를 통해 node를 찾아갈 수 있도록 설정하니 성공적으로 빌드할 수 있었다. (터미널을 켜서 그냥 루트에서 진행하면 된다)

sudo ln -s "$(which node)" /usr/local/bin/node

Use of bitwise '|' with boolean operands

위에서 겨우 빌드 성공한 프로젝트는 RN 버전 0.71.7로 개발된 프로젝트였는데, RN 버전 0.68.5를 사용하고 있던 다른 프로젝트에서는 또 빌드가 되지 않았다. 🤦 이 역시 XCode 14.3으로 업데이트한 뒤에 발생한 에러로 추측된다.

에러 로그를 자세히 확인해 보니 Yoga.cpp에서 발생한 에러로, 검색하면 동일한 이슈 글이 RN github에 있다. 읽어보니 동일한 이슈를 제보한 사람들의 말을 모아 보면 RN version < 0.69 with XCode 14.3에서 발생하는 이슈라고 한다. 해당 글에서는 대부분 patch-package를 이용한 코드 변경을 추천하고 있어 나도 그렇게 진행하여 일시 해결하였다. (이전에도 v0.63에서 iOS 키보드 이슈로 patch-package를 쓴 적이 있어 비교적 죄책감이 덜했다...)

혹시라도 코드를 변경하기가 꺼려진다 하면 XCode 버전을 14.2로 낮춰서 해결했다는 사람들도 있으니 참고하시라.

patch-package를 통한 해결 방법

  1. node_modules/react-native/ReactCommon/yoga/yoga/Yoga.cpp 파일을 찾는다.
  2. node->getLayout().hadOverflow() |가 적힌 줄을 찾아, 비트 연산자인 |를 논리 연산자 ||로 수정한다.
  3. npx patch-package react-native를 실행하면 이 변경사항을 다른 사람도 트래킹할 수 있도록 파일이 만들어진다. 이 파일을 커밋하면 끝.

사담

기껏 열심히 빌드해 놨더니 구글 형님들로부터 공문이 떨어져서 RN 버전을 강제로 올려야 하게 생겼다. 😇 holymoly...
Android 13 이상을 타겟팅 하려면 최소 0.70으로 올려야하는 것 같던데 갈 길이 정말 멀다... 8월 31일 이후로 미반영 시 업데이트 못한다고 하는데, 일단 싹싹 빌연장 신청을 해서 11월까지 유예해둔 상태다... 언제 밀린 업그레이드를 다 할 수 있으려나...

References

profile
기록하고 싶은 것을 기록하는 저장소

0개의 댓글