概要
React Nativeを0.64.0にアップグレードしたときにXcodeでビルドもアーカイブもできなくなったので、解消方法を書いています。
###環境
macbook pro / Catalina
Issue1. jsbundle: No such file or directory
Error
Xcodeにて以下のエラー
error: /****/native/ios/main.jsbundle: No such file or directory (in target 'app-name' from project 'app-name')
/****/native/ios/main.jsbundle: No such file or directory
Solution
①NodeのPathを調べる / Checking the Path of a Node
$ which node
等でnodeのpathを調べる。
$ which node
/Users/miguel/.anyenv/envs/nodenv/shims/node
②XcodeでNodeのPathを編集 / Edit Node's Path in Xcode
Projectファイル > TARGETS > APP Name > Build Phases > Bundel React Native code and imageにて、
export NODE_BINARY=node
../node_modules/react-native/packager/react-native-xcode.sh
となっているところを、 / It's written...
export NODE_BINARY=/Users/miguel/.anyenv/envs/nodenv/shims/node
../node_modules/react-native/scripts/react-native-xcode.sh
自分のローカルのNodeのPathに合わせてに編集。 / Edit to fit your local Node Path.
③メトロバンドラー / Metro-bandler
バンドルを手動で作成する。
React Nativeを0.64.0にアップグレードしたときは一度手動で作成しないといけないらしい。(普段はXcodeが自動で作成してくれてる。)
※2回目以降は不要。
Create the bundle manually.
When I upgraded React Native to 0.64.0, I heard that I have to create the bundle manually once. (Normally, Xcode automatically creates the bundle for you.
(Normally, Xcode creates it automatically.) You don`t need to do it the second time or later.
$ react-native bundle --entry-file index.js --platform ios --dev false --bundle-output ios/main.jsbundle --assets-dest ios
④Run
$ yarn ios
これでビルドできた。
Issue2: Can’t find ‘node’ binary to build React Native bundle
Error
Xcodeにて以下のエラー
Can’t find ‘node’ binary to build React Native bundle
Solution
デフォルトのシェルをzshにしていても、Xcodeがbashで動くことがあるみたい。(まだ何故かは分かってないです。詳しい方いたらご教示ください。)
結果的に、bash_profileでnodeのパスを通さないとビルドできなかった。
nodeのpathをzshrc/bashprofileどちらにも通した後、Issue1の解消方法を実行することで解消した。
It seems that Xcode sometimes runs in bash even if the default shell is set to zsh.
As a result, I could not build without passing the node path in bash_profile.
The problem was solved by passing the path of node to both zshrc/bashprofile and executing the solution of Issue1 .
Bundle React Native code and imagesのShellが /bin/sh
になっているからか?と思い/bin/zsh
にもしてみたが、結果は変わらず、やはりbashを見ているようだった。
解決した
まだ不明点もありますが、これで無事にビルド・アーカイブができるようになりました。
ただm1やbig surの方は、これでも上手くいかないこともあるみたいです。
間違い・補足等ありましたら、教えていただけたら幸いです。