XCode 4 以降をお持ちの場合は、それを開いて [設定] -> [ダウンロード] -> [コンポーネント] に移動し、デフォルトではインストールされないコマンド ライン ツールをインストールする必要があります。これが起こるまでRailsをインストールできませんでした。
概要
最近、expo プロジェクトを ea で構築するときに、次のような問題が発生し始めました。
[INSTALL_PODS] Using Expo modules
[INSTALL_PODS] [Expo] Enabling modular headers for pod ExpoModulesCore
...
[INSTALL_PODS] [!] Invalid `Podfile` file:
[INSTALL_PODS] [!] Invalid `RNGestureHandler.podspec` file: undefined method `exists?' for File:Class.
...
[INSTALL_PODS] # -------------------------------------------
[INSTALL_PODS] #
[INSTALL_PODS] > isUserApp = File.exists?(File.join(__dir__, "..", "..", "node_modules", "react-native", "package.json"))
[INSTALL_PODS] # if isUserApp
[INSTALL_PODS] # -------------------------------------------
私はローカルでビルドすることはあまりないので (Expo サーバーでのリモート ビルドは問題ありません)、Intel MBP から M2 MBA への移行など、過去数週間にさまざまなことが原因でこの問題が発生した可能性があります。誰かが経験した明らかな理由。このエラーは、podfile による未定義のメソッドの使用に問題があることを示唆しています。しかし、オンラインで見つけたこの問題に対処するための提案には、私がよく知っている範囲をはるかに超えたあらゆる種類の調整が含まれています。 Expo/EAS での私の経験は、まさに次のとおりです。
brew install cocoapods fastlane
そしてそれ以上は関与しないでください。理想的には、クイックフィックスとして提案されている種類の特別な gem インストールをいじるのは避けたいと考えています。
そこで質問は、これは実際にポッドファイルの単なるバグ(非推奨のメソッドの使用)であり、最終的には修正されるものなのでしょうか?
更新: 大まかに言えば、答えは「はい」のようです。この問題は、影響を受けるパッケージの以降のバージョンで修正されますが、それらのパッケージは Expo と正式に互換性がありません。ビルドを許可するバージョンに更新すると、警告が表示されます。
[RUN_EXPO_DOCTOR] [16:17:37] Some dependencies are incompatible with the installed expo package version:
[RUN_EXPO_DOCTOR] [16:17:37] - react-native-gesture-handler - expected version: ~2.8.0 - actual version installed: 2.9.0
[RUN_EXPO_DOCTOR] [16:17:37] - react-native-reanimated - expected version: ~2.12.0 - actual version installed: 2.14.4
そこで問題は、Expo が正常にビルドするために必要なパッケージ バージョンを正式にサポートするのはいつですか?
解決策
この問題は、Ruby 3.2 で非推奨の関数 File.exists? が削除されたために発生します。 (参照)
まず、node_modules、package-lock.json を削除します。
次に、両方のライブラリの新しいバージョンをインストールします
npm install react-native-gesture-handler@^2.9.0
npm install react-native-reanimated@^2.14.4
次に、cd ios と pod install を実行します。