以前、ReactNativeの環境構築を投稿しましたが、シュミレータを実行する際にエラーが発生することがあります。
自分が直面した物をまとめようかと思います。
①"config.h" file not found
react-native run-iosした時にタイトルのようなエラーが発生することがあります。
解決法
モジュールの再設定を行うようです。
$ cd node_modules/react-native/third-party/glog-0.x.x $ ../../scripts/ios-configure-glog.sh
glog
フォルダが見つからない場合がたまにあるかもしれません。
その時は下記コマンドを実行することで作られます。
$ cd node_modules/react-native/scripts/ $ sh ios-install-third-party.sh
②Could not find iPhone X simulator
run-iosでシュミレータがないよとなることがあります。
バージョンを指定すれば、対象の端末で起動しますが、指定しないとiPhone6で起動します。
react-native run-ios --simulator 'iPhone Xs'
なので、別の原因が考えられます。
解決法
findMatchingSimulator.jsの書き換えで解決できます。
./node_modules/react-native/local-cli/runIOS/findMatchingSimulator.js if (!version.startsWith('iOS') && !version.startsWith('tvOS')) { continue; } // 下記に書き換え if (!version.startsWith('com.apple.CoreSimulator.SimRuntime.iOS') && !version.startsWith('com.apple.CoreSimulator.SimRuntime.tvOS')) { continue; }
③Can’t find ‘node’ binary to build React Native bundle
実機でビルド時に起こるエラーです。
解決法
nodeのパスを修正すれば直ります。
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
を
export NODE_BINARY=$HOME/.nodebrew/current/bin/node ../node_modules/react-native/packager/react-native-xcode.sh
に修正したら、直りました。
ちなみに、nodeのパスは下記コマンドで確認できるようです。
export -p
④Unknown argument type 'attribute' in method
Xcodeを11.3.1に上げたらエラーが出るようになりました
解決法
2つあります。1つはReact Nativeのバージョンを0.60.0などに上げるです
ただ、プロジェクトによっては難しい場合もあると思うので、応急処置はあります
node_modules/react-native/React/base/RCTModuleMethod.mm
を以下のように変更すると動きます
static BOOL RCTParseUnused(const char **input) { return RCTReadString(input, "__unused") || RCTReadString(input, "__attribute__((__unused__))") || // この行を追加 RCTReadString(input, "__attribute__((unused))"); }
これは、React Nativeのバージョンを0.60.0に上げるとライブラリが上記のように自動でなるので、それを手動で修正して暫定対応としています
一般的に遭遇しそうなものを記載しました。
他に出てきたら追記しようと思います。
参照
React Native エラー Can’t find ‘node’ binary to build React Native bundle