くま's Tech系Blog

基本的には技術で学んだことを書き留めようと思います。雑談もやるかもね!

ReactNativeの環境構築【トラブルシューティング】

以前、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に上げるとライブラリが上記のように自動でなるので、それを手動で修正して暫定対応としています

一般的に遭遇しそうなものを記載しました。

他に出てきたら追記しようと思います。

参照

issue1

issue2

React Native エラー Can’t find ‘node’ binary to build React Native bundle