`React / RCTBridgeModule.h`ファイルが見つかりません


115

Xcodeで反応ネイティブのiOSアプリをビルドしているときにこのエラーが発生します。

ここに画像の説明を入力してください

npmのインストールとrpmリンクのreact-native-fsライブラリの後にこのエラーが発生し始めました。しかし、解決策をオンラインで検索した後、他の反応ネイティブライブラリをインストールしているときに多くの人が同じエラーを受け取っていることに気づきました。

多くの人が提案する可能な解決策は、「ビルド設定」->「ヘッダー検索パス」の下に以下を追加することです。

$(SRCROOT)/../node_modules/react-native/React -(再帰的)

しかし、この解決策では運が悪く、それでも同じエラーが発生します


v0.41.2でも同じエラーが発生します。<React / RCT ...>で動作するはずですが、動作しません:/
pgarciacamou

@camou以下の私の答えを参照してください。役立つかもしれません
ローレンス

@CecilRodriguez react-native-fsにはどのバージョンがありますか?XCodeを使用して手動で追加する場合は、github.com / itinance / react
native

次のエラーが表示されます:モジュールを解決できませんreact-native-webrtc
Ankita

回答:


160

私の場合、この特定の問題は、iOS用の0.40+反応ネイティブアプリをアーカイブしようとしたときに発生しました(解決策はここにあります:にアップグレードすると、信頼できるビルドが^0.39.2失敗します^0.40.0)。

何が起こったかというと、Xcodeは並列的に反応ネイティブライブラリをビルドしようとしており、実際に反応ライブラリをビルドするに、暗黙的な反応依存関係を持つライブラリをビルドしていました。

私の場合の解決策は:

  1. 並列ビルドを無効にします。

    • Xcodeメニュー->製品->スキーム-> Shemesの管理...
    • アプリケーションをダブルクリックします
    • [ビルド]タブ-> [ビルドの並列化]をオフにします
  2. プロジェクト依存としてリアクションを追加

    • Xcode Project Navigator->ライブラリからルートツリーにReact.xcodeprojをドラッグします
    • [ビルドフェーズ]タブ->ターゲットの依存関係-> +-> Reactを追加

1
これは、下から反応ネイティブの0.40+にアップグレードするときにのみ発生することを発見しました。0.40+ RNで初期化されたプロジェクトは、すでに並列ビルドがオフになっています。
agiaLab 2017

20
「ルートツリーにドラッグ」とはどういう意味ですか?そして「ビルドフェーズ」タブ...これはReact.xcodeprojのビルドフェーズですか?
GreenAsJade 2017年

2
このバグが新しいターゲットの作成後に表示される場合、ステップ1で十分です:)
Kepedizer '23

2
Expoが排出したプロジェクトにどのように対処しますか?React.xcodeprojはどこにもありません。ReactはPodfile依存関係にあります
Sebastien Lorber

1
@SebastienLorberはnode_modulesを開き、そこからプロジェクトをドラッグします
Ramon Canales

35

ターゲットを無効にParallelise BuildしてReactターゲットの上に追加してください

ここに画像の説明を入力してください


最初の答えの後で自分でそれを理解しましたが、反応を上に動かすとうまくいきました!しかし、それが実際に構築プロセスに何を意味するのかを理解しなければなりませんでした
njoye

1
私の髪を引っ張って、Reactターゲットを追加した後に私が間違っていることを考えていましたが、それを上に動かすとうまくいきました。@njoyeビルドプロセスでこれが何を意味するか説明できますか?ありがとうございました!
ユージーンキム

@EugeneKimリスト内の要素の順序は、Appleが時系列順に表示する方法です(これは、OSXとiOSの両方で、頻繁に表示されます)。したがって、「App」の前にターゲット「React」を置くと、「React」のコードが独自に作成されます。独自のコードはReactターゲットを使用しているため、ビルドできるかどうかに影響するようです。ビルドされているファイルがターゲットで使用されている可能性があります。
njoye

並列ビルド機能を使用してビルド時間を短縮したい
utkarsh-devops

25

クイックフィックス(最高ではない)

インポートの反応ネイティブヘッダー行を変更します。

 #import <React/RCTBridgeModule.h>
 #import <React/RCTLog.h>

に:

 #import "RCTBridgeModule.h"
 #import "RCTLog.h"

これは、使用しようとしたライブラリに加えなければならない変更の例です。#46を閉じる-'RCTBridgeModule.h'ファイルが見つかりません


16
リリースノートを注意深く読んだ場合、それは実際には別の方法だと思います-新しい/承認された方法は#import <React/RCT...h>ここでコミット
ユーザー

1
私はそれがドキュメントが推奨するものとは逆に思われることを知っていますが、指定されたフォーマット#import "RCTBridgeModule.h"は今日私にとって本当にうまくいきました。
2017年

私のエラーには、RCTFileReaderModule.hファイルでフラグが立てられています。#importステートメントを推奨どおりに変更しましたが、役に立ちませんでした。リンクされたリポジトリプルリクエストで、変更がRNFSManager.hとRNFSManager.mで行われたことがわかります。私はこれらの2つのファイルでそれを作ってみましたが、それも助けにはなりませんでした。私が間違っていることは何か考えていますか?
Yossi


3

React Nativeを0.40+にアップグレードした後にこのエラーが発生した視聴者はreact-native upgrade、コマンドラインで実行する必要がある場合があります。


5
私は今これを試しています。代わりにreact-native-git-upgradeを使用するのはどうですか?
pgarciacamou 2017

そう、それはもう一つの選択肢です。どちらもうまくいくと思います。
ローレンス

3

Libraries/React.xcodeprojxcodeで赤の場合は、node_modulesを再インストールします

rm -rf node_modules && yarn

反応ネイティブ0.46.3から新しく作成したプロジェクトは赤でした:反応ネイティブinitを実行したとき、SIはnpm 5.3.0と糸0.24.5を持っています


ありがとう、プロジェクトをgithubにプッシュしていました。そして、それを再びクローンするとき、私は赤で表示されていたReactライブラリーが欠けていました。コマンドが機能しています。👍
Rifinio

2

以前の投稿とここで説明されているように、react-nativeライブラリの最新リリースには互換性に重大な変更があります。react-native 0.40+へのアップグレードをまだ計画していない場合は、たとえばreact-native-fsを使用して、ライブラリの以前のバージョンを強制インストールできます。

npm install --save -E react-native-fs@1.5.1

2

デバッグを構築できましたが、アーカイブを構築できませんでした。

React.xcodeproj/ node_modules / react-native / ReactのXcodeのルートディレクトリにドラッグしてこの問題を解決し、ビルドフェーズ>ターゲットの依存関係でターゲットの依存関係としてReactを追加しました。


何もありませんReact.xcodeprojでは/node_modules/react-native/React
アンドリューコスター

@AndrewKoster同じ問題が発生しています
セシルロドリゲス

@CecilRodriguez Xcodeでコンパイルするときに、Cocoapodsを追加し、PodfileにポッドとしてReactを追加することで、これをなんとか修正できました。しかし、コンパイルされたライブラリをで使用しようとすると、react-native run-iosXcodeでは発生しないコンパイルエラーが発生します。関連するドキュメントの完全な欠如はイライラさせられます。
Andrew Koster

1
@Yossiいいえ、まだです。私が試したすべての試みはうまくいきませんでした。
セシルロドリゲス

1
@Yossiいいえ、私はあなたのものを試しました。運が悪い。それは私のネイティブモジュールと関係があります
セシルロドリゲス

2

React Native 0.60以降、この問題は多くの場合、新しい「自動リンク」機能とリンクされたリンクライブラリが原因で発生します。これは私のためにそれを修正します

を使用して古いライブラリのリンクを解除

$ react-native unlink react-native-fs

完全に使用してポッド統合を更新する

$ pod deintegrate && pod install

次に、ワークスペースをリロードして、クリーンビルドを実行します。


1

このエラーpod installは、新しい依存関係のコマンドを実行した後に表示されました。それに加えて、Reactもインストールされていました。したがって、おそらくXcodeはパスと混同されていました。これらの行をPodFileから削除したところ、エラーは発生しませんでした。ここから削除されたものはすでにXcodeでリンクされていることに注意してください。

target 'app' do

  pod 'GoogleMaps'
  pod 'Firebase/Auth', '~> 6.3.0'
  pod 'Firebase/Database', '~> 6.3.0'

  # Removed four pods below and it worked.

  pod 'react-native-image-picker', :path => '../node_modules/react-native-image-picker'

  pod 'ReactNativePermissions', :path => '../node_modules/react-native-permissions'

  pod 'react-native-image-resizer', :path => '../node_modules/react-native-image-resizer'

  pod 'RNFS', :path => '../node_modules/react-native-fs'

  end

1

私にとって、このエラーは、新しいスキーム/ターゲット(app.staging)をアプリに追加し、ポッドインストールを使用してポッドをインストールしたときに発生しました。

この問題は、ポッドがすべてのターゲットで共有されていないために発生しています。そのため、Podfile内に新しく追加されたターゲット(app.staging)を追加する必要があります。

これが私のPodfileです。

platform :ios, '9.0'
require_relative '../node_modules/@react-native-community/cli-platform-ios/native_modules'

target 'app' do
  # Pods for app
  pod 'FBLazyVector', :path => "../node_modules/react-native/Libraries/FBLazyVector"
  pod 'FBReactNativeSpec', :path => "../node_modules/react-native/Libraries/FBReactNativeSpec"

  target 'appTests' do
    inherit! :search_paths
    # Pods for testing
  end

  # Pods for staging app // important line below
  target 'app.staging'

  use_native_modules!
end

1

このエラーは、create-react-native-moduleで作成した新しいモジュールで発生します。投稿された解決策はどれも私にとってうまくいきませんでした。

私にとってうまくいったことは、最初yarnに、新しく作成されたモジュールフォルダーで実行することを確認することでしたnode_modules/(この手順はおそらく明白です)。次に、XCodeで、MyModuleNameのデフォルトの選択の代わりに、Product-> Scheme-> Reactを選択します。


+1、有効なpodfileを作成して実行するまで他のスキームが表示されないモジュール開発に新しい他の人を追加することが重要ですpod install。create-react-native-moduleはこれを行っていないようです。しばらく電話を切った。しかし、有効なpodfileを作成してインストールを実行すると、これでうまくいきました。
エリオットロドリゲス

1

プロジェクトのiOSフォルダーに移動し、ポッドをインストールします-

$ pod install

ポッドタイプコマンドのインストールでエラーが発生した場合

$ xcode-select -p

結果は-/Applications/Xcode.app/Contents/Developerになります。

パスが正しくない場合は、XcodeでiOSプロジェクトを開き、次の場所に移動します:Xcode-> preferences-> command line tools-> select Xcode

ポッドを再度インストールすると、問題が修正されます。



0

エディターから作成する場合は、SMobile.xcschemeも開きます。

そして変化 parallelizeBuildables = "NO"


0

私にとっては上記の解決策からは何も機能せず、以下は機能しました(私はすでにチェックアウトしParallelize Buildて追加しましたReact

1. Open XCode --> To Libraries add `$LibraryWhichDoesNotWork.xcodeproj$`
2. Then for your app in the `Build Phases` add to the `Link Binary with Libraries` the file `lib$LibraryWhichDoesNotWork$.a`

0

0.58.4から新しい反応ネイティブバージョン0.60.4にアップグレードしているときに、この問題が発生しました。インターネットで見つけたものは何の助けにもなりませんでしたが、なんとかそれを機能させることができました。

ビルド設定に移動し、「ヘッダー検索パス」を検索して、エントリを選択し、DELETEボタンを押します。

私はこれらの値をオーバーライドしましたが、削除後にデフォルトに戻ったようです。またCocoapodsは、後にターミナル内のメッセージとそれについて不平を言いましたpod install

[!] The `app [Release]` target overrides the `HEADER_SEARCH_PATHS` build setting defined in `Pods/Target Support Files/Pods-app/Pods-app.release.xcconfig'. This can lead to problems with the CocoaPods installation

0

react-native linkRN 0.59+で自動リンクをサポートしていない依存関係のマニュアルを作成した後、この問題に遭遇しました

解決策は、XcodeのLibrariesフォルダーの下にあるxcodeprojファイルを選択してから、ビルド設定でヘッダー検索パスを変更して、これら2つ(再帰的)を追加することでした。

$(SRCROOT)/../../../ios/Pods/Headers/Public/React-Core
$(SRCROOT)/../../../ios/Pods/Headers/Public

0

Paralleliseビルドを有効にしてヘッダーの欠落の問題を回避する場合は、スキームに事前ビルド手順を提供して、反応ヘッダーを派生データ領域に配置します。この場合、ビルド設定はReactプロジェクトからのものであることに注意してください。はい、それは美しさの問題ではありませんが、それは仕事を成し遂げ、ビルドから多くの時間を削ります。ビルド前のステップの出力は、prebuild.logに記録されます。コピーする必要がある正確なヘッダーは、プロジェクトの反応ネイティブの依存関係に依存しますが、これから要旨が得られます。

スキームの編集=>ビルド

環境変数から派生データディレクトリを取得し、必要な反応ヘッダーをコピーします。

#build_prestep.sh (chmod a+x)
derived_root=$(echo $SHARED_DERIVED_FILE_DIR|sed 's/DerivedSources//1')
react_base_headers=$(echo $PROJECT_FILE_PATH|sed 's#React.xcodeproj#Base/#1')
react_view_headers=$(echo $PROJECT_FILE_PATH|sed 's#React.xcodeproj#Views/#1')
react_modules_head=$(echo $PROJECT_FILE_PATH|sed 's#React.xcodeproj#Modules/#1')
react_netw_headers=$(echo $PROJECT_FILE_PATH|sed 's#React/React.xcodeproj#Libraries/Network/#1')
react_image_header=$(echo $PROJECT_FILE_PATH|sed 's#React/React.xcodeproj#Libraries/Image/#1')

echo derived root = ${derived_root}
echo react headers = ${react_base_headers}

mkdir -p ${derived_root}include/React/

find  "${react_base_headers}" -type f -iname "*.h" -exec cp {} "${derived_root}include/React/" \;
find  "${react_view_headers}" -type f -iname "*.h" -exec cp {} "${derived_root}include/React/" \;
find  "${react_modules_head}" -type f -iname "*.h" -exec cp {} "${derived_root}include/React/" \;
find  "${react_netw_headers}" -type f -iname "*.h" -exec cp {} "${derived_root}include/React/" \;
find  "${react_image_header}" -type f -iname "*.h" -exec cp {} "${derived_root}include/React/" \;

スクリプトはビルドクリーン中に呼び出されます-これは理想的ではありません。私の場合、クリーンアップの早い段階でスクリプトを終了させるための環境変数が1つあります。

if [ "$RUN_CLANG_STATIC_ANALYZER" != "NO" ] ; then
    exit 0 
fi

0

ポッドをインストールする必要があります。ポッドファイルが存在する場合は、次のように入力します。

pod install

そうでない場合:最初に、

pod init

その後、

pod install

ターミナルで。あなたは行ってもいいです


-1

それを正しくするためにあなたができることは:

1)npm uninstall reat-native-fsライブラリをアンインストールする

2)npm unlink react-native-fsライブラリのリンクを解除する

これでライブラリが正常に削除され、プロジェクトに再度libがインストールされ、今度はすべてを手動でリンクします。自動リンクが原因でこのエラーが発生することがあります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.