RN v0.62にアップデートしました。iOSでアプリを実行すると、次のエラーが表示されます
!] CocoaPods could not find compatible versions for pod "ReactCommon/jscallinvoker":
In snapshot (Podfile.lock):
ReactCommon/jscallinvoker (from `../node_modules/react-native/ReactCommon`)
In Podfile:
ReactCommon/jscallinvoker (from `../node_modules/react-native/ReactCommon`)
None of your spec sources contain a spec satisfying the dependency: `ReactCommon/jscallinvoker (from `../node_modules/react-native/ReactCommon`)`.
すべてのnode_modulesを削除し、npm iを実行しました。 iOSディレクトリーにポッドインストールも行いましたが、問題は解決しません。ポッドレポの更新も行いました。
この問題は、React Native
をバージョン0.63.0
にアップグレードした後に私のプロジェクトで発生するため、解決策としては、Podfile.lock
を削除してPodfile
全体を削除し、新しいコンテンツをフレッシュインストールReact最新バージョンのネイティブプロジェクトであり、そのコンテンツは次のとおりです。
require_relative '../node_modules/@react-native-community/cli-platform-ios/native_modules'
require_relative '../node_modules/react-native/scripts/react_native_pods'
platform :ios, '10.0'
target '[YourProjectName]' do
config = use_native_modules!
use_react_native!(:path => config["reactNativePath"])
target '[YourProjectName]Tests' do
inherit! :complete
# Pods for testing
end
# Enables Flipper.
#
# Note that if you have use_frameworks! enabled, Flipper will not work and
# you should disable these next few lines.
use_flipper!
post_install do |installer|
flipper_post_install(installer)
end
end
target '[YourProjectName]-tvOS' do
# Pods for [YourProjectName]-tvOS
target '[YourProjectName]-tvOSTests' do
inherit! :search_paths
# Pods for testing
end
end
注:プロジェクト名を[YourProjectName]
に置き換える必要があることは明らかです。
その後、プロジェクトのルートでnpx pod-install
コマンドを実行すると、すべてが正常に戻ります。
React-Nativeがポッドを動的に構成するようになったため、各ポッドをリストする必要がなくなりました。
use_react_native!(:path => config ["reactNativePath"])
これは、63.1ベースのPodfileから取得したものです。
require_relative '../node_modules/react-native/scripts/react_native_pods'
require_relative '../node_modules/@react-native-community/cli-platform-ios/native_modules'
platform :ios, '10.0'
target 'test' do
config = use_native_modules!
use_react_native!(:path => config["reactNativePath"])
target 'testTests' do
inherit! :complete
end
use_flipper!
post_install do |installer|
flipper_post_install(installer)
end
end
target 'test-tvOS' do
target 'test-tvOSTests' do
inherit! :search_paths
end
end
Podfile
の行を次のように変更することで、この問題(バージョン0.63)を解決しました
pod 'ReactCommon/callinvoker', :path => "../node_modules/react-native/ReactCommon"
に
pod 'React-callinvoker', :path => "../node_modules/react-native/ReactCommon/callinvoker"