xcode로 시뮬레이터를 잘만하다가 깃허브 다른 프론트 분과의 코드를 머지 시켰더니..
내가 뭔갈 잘못 건드린건지
나의 시뮬레이터가 갑자기 다운되는 이슈가 발생했다.
오류를 해결하면 다른 오류가 생기고... 찾아보니 흔한 오류였어서 잊지말자는 의미에서 포스팅한다.
1. error Failed to build ios project. "xcodebuild" exited with error code '65'
분명히 터미널에는 어플이 성공적으로 빌드되었다고 알람이 뜨는데
시뮬레이터가 작동하지 않아 xcode 내에서의 문제임은 직감했었다.
이 에러는 구글링 해보니까 사람들이 많이 겪는 에러였다. .
1-2. 해결과정
(1) xcode 열기
(2) 파일 클린업해주기
xcodebuild clean -workspace kboFront.xcworkspace -scheme kboFront
(3) pod 재설치
cd ios
pod deintegrate
pod install
(4) xcode로 다시 돌아가서 product>clean build folder 해주기
그리고 pod 재설치를 하고 xcode로 돌아가면 어떤 버전으로 따를 거냐 라는 알람이 뜨는데
xcode내에서의 버전이 아니라 disk 의 버전으로 따라가겠다는 버튼을 눌러주어야 한다.
참고문서
https://github.com/facebook/react-native/issues/37559
이 오류는 간단하게 해결이 되었는데 문제는...
다른 오류가 생겼다.
2. No bundle URL present 오류
서버를 다시 실행시켜주려고 하자 이번엔 no bundle URL 오류가 떴다.
하 이게 도대체 뭔데 ㅠ.ㅜㅠ
이 거지같은....!!!!
(1) xcode 에 방해가 되는 폴더 클린시켜주기
rm -rf ~/Library/Developer/Xcode/DerivedData/*
이걸 했는데도 여전히 bundle URL 이 없다는 알람이 떴다.
흠 도대체 뭐가 문제일까.
구글링해보니 main 파일이 없다는 알람이 떴다.
(2) ls ios 로 ios 폴더에 어떤 게 있는지 확인하기
먼저 ios 폴더에 어떤 것들이 있는지 확인해보자.
나는 지금 해결한 상태라서 main.jsbundle 이 있는 상태지만
저 오류가 떴을 당시에는 main.jsbundle <<- 이 파일이 들어있지 않았다.
만약 ls ios 를 했는데
저 파일이 없다면 지금부터 이걸 따라오면 된다.!
(3) main.jsbundle 파일 만들어주기
#npx 일 경우
npx react-native bundle --entry-file='index.js' --bundle-output='./ios/main.jsbundle' --dev=false --platform='ios'
#yarn 일 경우
yarn react-native bundle --entry-file='index.js' --bundle-output='./ios/main.jsbundle' --dev=false --platform='ios'
이렇게 하면 된다고 해서 코드를 입력했더니
metro-file-map: Watchman crawl failed. Retrying once with node crawler. Usually this happens when watchman isn't running. Create an empty .watchmanconfig file in your project's root folder or initialize a git or hg repository in your project. Error: Watchman error: std::__1::system_error: open: /Users/hihilong/Desktop/kbo/kboFront: Operation not permitted. Make sure watchman is running for this project.
ㅎㅎ 새로운 오류가 떴다. ^^......
Error 코드를 잘 읽어보자. 음...
눈에 띄는 부분이 보인다.
>>Watchman crawl failed<<
watchman 에 어떤 문제가 있는 듯 보인다.
(3)-1.watchman 에 파일 권한 주기
sudo chown -R $(whoami) /Users/~본인의 파일 경로
(3)-2. watchman.config 빈 파일 만들어주기
echo '{}' > .watchmanconfig
(3)-3. Metro bundler 캐시 삭제 및 재실행
npx react-native start --reset-cache
이렇게 했는데도...여전히 안됐다..여전히...
Error: Formula watchman has not implemented #plist, #service or installed a locatable service file
에러는 참...다양하게 난다..참...ㅋ
뭐래냐..
watchman이 여전히 문제가 나서 위의 main.jsbundle 이 설치 자체가 안되니 이 문제를 꼭 해결해야했다.
(4) watchcman 서버 수동실행
watchman shutdown-server
watchman --foreground &
(4)-2. 다시 bundle 파일 생성
npx react-native bundle --entry-file='index.js' --bundle-output='./ios/main.jsbundle' --dev=false --platform='ios' --assets-dest='./ios'
하고 reset.cache 와 xcode에서 clean build folder 는 꼭 해주어야한다!
그리고 터미널도 재실행 해보았더니
ls ios>> main.jsbundle 이 생겼다!!!!
신나신나!
다 클린업 해준상태에서 새롭게 xcode를 열어주자
(reset.cache 와 clean build folder가 되어있는 상태여야 한다!!! -> 안그러면 새로고침이 안됐을 수 있음)
((만약 여기서도 문제가 나면 pod install 도 새롭게 해줬어야 한다!)
(5) 새터미널을 열어서 다시 xcode를 실행시켜주자
open ios/(프로젝트이름).xcworkspace
이 코드를 통해 들어온 xcode라면
이 화면이 보일 것이다.
여기서 copy bundle resources를 열면 이 상태에선 main.bundle 이 없었을 것이다.
+를 눌러주었는데
추가를 해주기 위해 누른 파일에 아무것도 없는 상태였다면
여기 Add Other<- 를 눌러서 ios 폴더 밑에 있는 것을 확인할 수 있다.
멋지게 추가된 모습!
그리고서 다시 터미널로 돌아와
(새로운 터미널을 켜서)
npx run ios 를 해주자
참고문서
https://velog.io/@haerim95/React-Native-Error-Log-No-bundle-URL-present-%EC%9D%B4%EC%8A%88
휴..거의 8시간 동안 오류 해결하느라 낑낑댔다. . .
구글링을 하고 다른 사람들이 해결해준 방안을 해도 안됐고
처음부터 다시 해야하나 싶어서 코드도 아예 다 삭제해보기도 했다.ㅠㅠㅠ
해결이 되어 정말 다행이다. :)
고생했다 나자신...
'모바일 > React Native' 카테고리의 다른 글
[RN] FlatList 알아보기 (1) | 2024.07.22 |
---|---|
[RN] 회원가입 UI- 약관 추가하기 (0) | 2024.07.17 |
[React] 쏟아지는 페이지 관리하기 (1) | 2024.07.12 |
[RN] 하단 버튼바 만들기 (0) | 2024.07.04 |
[RN] 네비게이션 (1)- navigation 사용하기 (0) | 2024.07.03 |