File `React / RCTBridgeModule.h` tidak ditemukan


115

Mendapatkan kesalahan ini saat membangun aplikasi iOS react-native di xcode.

masukkan deskripsi gambar di sini

Mulai mendapatkan kesalahan ini setelah npm install dan rpm menghubungkan library react-native-fs . Tetapi setelah mencari solusi secara online, saya perhatikan bahwa banyak orang mendapatkan kesalahan yang sama saat menginstal pustaka asli react lainnya.

Sebuah solusi yang mungkin disarankan oleh banyak adalah, Menambahkan berikut di bawah "Pengaturan Build" -> "Header Cari Jalan".

$(SRCROOT)/../node_modules/react-native/React - (Rekursif)

Namun tidak berhasil dengan solusi ini, masih mendapatkan error yang sama


Saya mendapatkan kesalahan yang sama dengan v0.41.2, seharusnya berfungsi dengan <React / RCT ...> tetapi tidak: /
pgarciacamou

@camou lihat jawaban saya di bawah; mungkin membantu
Lawrence

@CecilRodriguez Versi apa yang Anda miliki untuk react-native-fs ?. Jika Anda menambahkan secara manual dengan XCode
Shubham Khatri

Saya mendapatkan kesalahan ini: Tidak dapat menyelesaikan modulreact-native-webrtc
Ankita

Jawaban:


161

Dalam kasus saya, masalah khusus ini terjadi ketika saya mencoba mengarsipkan aplikasi 0,40+ react-native untuk iOS (solusi ditemukan di sini: Build yang andal ^0.39.2gagal saat meningkatkan ke^0.40.0 ).

Apa yang terjadi adalah Xcode mencoba untuk membangun perpustakaan react-native secara paralel dan sedang membangun perpustakaan dengan dependensi react implisit sebelum benar-benar membangun perpustakaan react.

Solusi dalam kasus saya adalah:

  1. Nonaktifkan build paralel:

    • Menu Xcode -> Produk -> Skema -> Kelola Tema ...
    • Klik dua kali pada aplikasi Anda
    • Build tab -> hapus centang Parallelize Build
  2. Tambahkan reaksi sebagai ketergantungan proyek

    • Xcode Project Navigator -> seret React.xcodeproj dari Perpustakaan ke pohon root
    • Build Phases Tab -> Target Dependencies -> + -> tambahkan React

1
Saya telah menemukan bahwa ini hanya terjadi ketika Anda meningkatkan ke react-native 0.40+ dari bawah. Project yang dimulai dengan 0,40+ RN sudah menonaktifkan build paralel.
agiaLab

20
Apa yang dimaksud dengan "seret ke pohon akar"? Dan "Build Phases Tab" ... apakah ini Build Phases dari React.xcodeproj?
GreenAsJade

2
Ketika bug ini muncul setelah membuat target baru, langkah 1 sudah cukup :)
Kepedizer

2
Bagaimana Anda menangani proyek yang dikeluarkan Expo? Saya tidak memiliki React.xcodeproj di mana pun, React ada dalam dependensi Podfile
Sebastien Lorber

1
@SebastienLorber membuka node_modules dan menyeret proyek reaksi dari sana
Ramon Canales

35

Pastikan Anda menonaktifkan Parallelise Builddan menambahkan Reacttarget di atas target Anda

masukkan deskripsi gambar di sini


Memikirkannya sendiri setelah jawaban pertama, tetapi bergerak bereaksi ke atas berhasil! Harus menyadari apa yang sebenarnya dimaksudkan untuk proses pembangunan itu
njoye

1
Menarik rambut saya dan memikirkan kesalahan yang saya lakukan setelah menambahkan target React tetapi memindahkannya ke atas berhasil. @njoye bisakah Anda menjelaskan apa artinya ini dalam proses pembuatan? Terima kasih!
Eugene Kim

@EugeneKim urutan elemen dalam daftar adalah cara Apple untuk menunjukkan urutan kronologis (ini masih sering mengganggu saya, di OSX dan juga iOS). Jadi, menempatkan target "React" sebelum "App" akan membuat kode dari "React" sebelum kode Anda sendiri. Karena kode Anda sendiri menggunakan target React, ini tampaknya memengaruhi jika dapat dibuat. Mungkin ada file yang sedang dibangun yang kemudian digunakan dalam target Anda.
njoye

Saya ingin menggunakan fitur pembuatan paralel untuk mengurangi waktu pembuatan
utkarsh-devops

25

PERBAIKAN CEPAT (bukan yang terbaik)

Ubah baris header import react-native:

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

Untuk:

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

Berikut adalah contoh perubahan yang harus saya buat untuk perpustakaan yang saya coba gunakan: Tutup # 46 - File 'RCTBridgeModule.h' tidak ditemukan .


16
Jika Anda membaca catatan rilis dengan cermat, saya pikir sebenarnya sebaliknya - cara baru / yang disetujui #import <React/RCT...h>? lakukan di sini
pengguna

1
Saya tahu ini tampaknya mundur dari apa yang direkomendasikan dokumen, tetapi format yang ditentukan #import "RCTBridgeModule.h"benar-benar berfungsi lebih baik untuk saya hari ini.
cakar

Kesalahan bagi saya ditandai di file RCTFileReaderModule.h. Saya mengubah pernyataan #import seperti yang disarankan tetapi tidak membantu. Saya melihat di permintaan penarikan repo tertaut bahwa perubahan dilakukan di RNFSManager.h dan RNFSManager.m. Saya mencoba membuatnya di dua file ini tetapi tidak membantu juga. Tahu apa yang saya lakukan salah?
Yossi

12

Perubahan

  #import "RCTBridgeModule.h"

untuk

 #import "React/RCTBridgeModule.h"

1
Terima kasih banyak!! Saya telah menghabiskan waktu berjam-jam mencari solusinya. Tapi solusi ini adalah penyelamat. Terima kasih!
Abhirup Mukherjee

3

Untuk penonton yang mendapatkan kesalahan ini setelah mengupgrade React Native ke 0.40+, Anda mungkin perlu menjalankan react-native upgradedi baris perintah.


5
Saya sedang mencoba ini sekarang. Bagaimana dengan menggunakan react-native-git-upgrade ?
pgarciacamou

Benar, itu pilihan lainnya. Saya pikir mereka berdua akan bekerja.
Lawrence

3

Jika Libraries/React.xcodeprojberwarna merah di xcode maka instal ulang node_modules

rm -rf node_modules && yarn

Proyek saya yang baru dibuat dari react-native 0.46.3 berwarna merah: SI memiliki npm 5.3.0 dan benang 0.24.5 ketika saya melakukan react-native init


Terima kasih, saya mendorong proyek saya ke github. Dan saat mengkloningnya lagi, saya kehilangan pustaka React yang berwarna merah. perintah Anda berfungsi. 👍
Rifinio

2

Rilis terbaru dari perpustakaan react-native seperti yang dijelaskan di posting sebelumnya dan di sini memiliki perubahan kompatibilitas yang merusak. Jika Anda tidak berencana untuk mengupgrade ke react-native 0.40+, Anda dapat menginstal paksa versi library sebelumnya, misalnya dengan react-native-fs:

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

2

Saya dapat membuat debug, tetapi saya tidak dapat membuat arsip.

Saya memecahkan masalah ini dengan menyeret yang React.xcodeprojditemukan di / node_modules / react-native / React ke direktori root saya di Xcode, lalu menambahkan React sebagai ketergantungan target dalam fase build> dependensi target.


Tidak ada React.xcodeprojdi /node_modules/react-native/React.
Andrew Koster

@AndrewKoster Saya mengalami masalah yang sama
Cecil Rodriguez

@CecilRodriguez Saya berhasil memperbaikinya saat mengkompilasi di Xcode, dengan menambahkan Cocoapods dan menambahkan React sebagai pod di Podfile. Namun, begitu saya mencoba menggunakan pustaka terkompilasi di react-native run-ios, saya mendapatkan kesalahan kompilasi yang tidak terjadi di Xcode. Kurangnya dokumentasi yang relevan membuat frustasi.
Andrew Koster

1
@Yos Tidak, belum. Semua upaya yang saya coba tidak berhasil.
Cecil Rodriguez

1
@Yossi Tidak, saya mencoba milik Anda. Tidak beruntung. Ini ada hubungannya dengan modul asli saya, saya pikir
Cecil Rodriguez

2

Setelah React Native 0.60, masalah ini sering kali disebabkan oleh library tertaut yang dicampur dengan fitur 'auto-linking' baru. Ini memperbaikinya untuk saya

Batalkan tautan perpustakaan lama menggunakan

$ react-native unlink react-native-fs

Segarkan integrasi Pod sepenuhnya menggunakan

$ pod deintegrate && pod install

Sekarang muat ulang ruang kerja Anda dan lakukan pembuatan bersih.


1

Kesalahan ini muncul untuk saya setelah saya menjalankan pod installperintah untuk dependensi baru. Bersamaan dengan itu, React juga telah diinstal. Oleh karena itu mungkin Xcode bingung untuk jalurnya. Saya menghapus baris ini dari PodFile dan kesalahan telah hilang. Harap dicatat bahwa yang dihapus dari sini sudah ditautkan di 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

Bagi saya, error ini terjadi saat saya menambahkan skema / target baru ( app.staging ) di aplikasi dan menginstal pod menggunakan pod install.

Masalah ini terjadi karena pod tidak dibagikan untuk semua target. Jadi saya perlu menambahkan target yang baru ditambahkan ( app.staging ) di dalam Podfile .

Ini Podfile saya.

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

Saya menerima kesalahan ini dalam modul baru yang saya buat dengan create-react-native-module . Tidak ada solusi yang diposting yang berhasil untuk saya.

Apa yang berhasil bagi saya adalah pertama kali memastikan untuk berjalan yarndi folder modul yang baru dibuat untuk membuat node_modules/(langkah ini mungkin sudah jelas). Kemudian, di XCode, pilih Produk -> Skema -> Bereaksi alih-alih pilihan default MyModuleName.


+1, penting untuk menambahkan orang lain yang baru dalam pengembangan modul sehingga Anda tidak akan melihat skema lain sampai Anda membuat podfile yang valid dan menjalankannya pod install. create-react-native-module tampaknya tidak melakukan ini untuk Anda. Membuat saya menutup telepon untuk sementara waktu. Tetapi ini berhasil untuk saya setelah saya membuat podfile yang valid dan menjalankan penginstalan.
Elliot Rodriguez

1

Buka folder iOS di proyek Anda dan instal pod -

$ pod install

Jika Anda mendapatkan kesalahan dalam pemasangan perintah tipe pod-

$ xcode-select -p

Hasilnya harus - /Applications/Xcode.app/Contents/Developer

Jika jalurnya salah, buka proyek iOS Anda di Xcode dan buka: Xcode-> preferensi-> alat baris perintah-> pilih Xcode

Dan menginstal lagi pod masalah Anda akan diperbaiki.



0

Jika Anda ingin membuatnya dari editor Anda juga buka SMobile.xcscheme

Dan berubah parallelizeBuildables = "NO"


0

Bagi saya tidak berfungsi apa pun dari solusi di atas dan di bawah ini adalah yang berhasil (saya sudah memeriksa Parallelize Builddan menambahkan 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

Saya mengalami masalah ini saat meningkatkan dari 0.58.4 ke versi react-native baru 0.60.4. Tidak ada dari apa yang saya temukan di internet yang membantu saya, tetapi saya berhasil membuatnya berfungsi:

Pergi ke pengaturan build, cari 'Header search paths', pilih entri, tekan tombol DELETE.

Saya telah mengganti nilai ini, dan sepertinya nilai tersebut kembali ke default setelah dihapus. Juga Cocoapods mengeluhkannya dengan pesan di Terminal setelah 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

Saya mengalami masalah ini setelah melakukan manual react-native linkketergantungan yang tidak mendukung tautan otomatis pada RN 0,59+

Solusinya adalah memilih file xcodeproj di bawah folder Libraries di Xcode dan kemudian di Build Settings, ubah Header Search Paths untuk menambahkan keduanya (rekursif):

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

0

Jika Anda ingin tetap mengaktifkan Parallelise Build dan menghindari masalah header yang hilang, berikan langkah pra-build dalam skema Anda untuk meletakkan header react ke dalam area data turunan. Perhatikan pengaturan build berasal dari proyek React dalam kasus ini. Ya, itu bukan keindahan tetapi menyelesaikan pekerjaan dan juga menghemat banyak waktu untuk membangun. Output langkah prebuild berakhir di prebuild.log. Header pasti yang perlu Anda salin akan bergantung pada dependensi react-native project Anda, tetapi Anda akan mendapatkan jistnya dari sini.

Edit Skema => Bangun

Dapatkan direktori data turunan dari variabel lingkungan dan salin header react yang diperlukan.

#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/" \;

Skrip dipanggil selama build-clean - yang tidak ideal. Dalam kasus saya, ada satu variabel env yang berubah membiarkan saya keluar dari skrip lebih awal selama pembersihan.

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

0

Anda hanya perlu menginstal pod, jika file pod sudah ada ketik saja

pod install

jika tidak: jadi pertama,

pod init

kemudian,

pod install

di terminal. dan Anda siap untuk pergi.


-1

Apa yang dapat Anda lakukan untuk melakukannya dengan benar adalah:

1) npm uninstall reat-native-fs untuk menghapus pustaka

2)npm unlink react-native-fs untuk membatalkan tautan perpustakaan

Sekarang pustaka berhasil dihapus dan sekarang instal lib lagi di proyek Anda dan kali ini tautkan semuanya secara manual. Terkadang penautan otomatis menyebabkan kesalahan ini.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.