`React / RCTBridgeModule.h` dosyası bulunamadı


115

Xcode üzerinde react-native bir iOS uygulaması oluştururken bu hatayı alıyorum.

görüntü açıklamasını buraya girin

Bu hatayı npm kurulumundan ve rpm bağlandıktan sonra react-native-fs kütüphanesinden sonra almaya başladık . Ancak çevrimiçi olarak bir çözüm aradıktan sonra, birçok kişinin diğer react yerel kitaplıklarını yüklerken aynı hatayı aldığını fark ettim.

Bir olası çözüm "Yapı Ayarları" altında aşağıdaki ekleme çok olduğu önerdiği, -> "Başlık Arama Yolları".

$(SRCROOT)/../node_modules/react-native/React - (Özyinelemeli)

Ama bu çözümde şans yok, yine de aynı hatayı alıyorum


V0.41.2 ile aynı hatayı alıyorum, <React / RCT ...> ile çalışmalı ama çalışmıyor: /
pgarciacamou

@camou aşağıdaki cevabımı görüyorsunuz; yardımcı olabilir
lawrence

@CecilRodriguez React-native-fs için hangi versiyona sahipsiniz ?. XCode ile manuel olarak ekliyorsanız lütfen github.com/itinance/react-native-fs#adding-manually-in-xcode
Shubham

Bu hatayı alıyorum: Modül çözülemiyorreact-native-webrtc
Ankita

Yanıtlar:


161

Benim durumumda bu özel sorun, iOS için 0.40+ react-native uygulamasını arşivlemeye çalışırken meydana geldi (çözüm burada bulundu: Yükseltme sırasında güvenilir derleme ^0.39.2başarısız olur^0.40.0 ).

Olan şey, Xcode'un react-native kitaplıklarını paralel olarak oluşturmaya çalışması ve daha önce örtük tepki bağımlılıkları olan kitaplıklar oluşturmasıydı. oluşturmaya çalışması ve react kitaplığını gerçekten oluşturmadan olan kitaplıklar oluşturmasıydı.

Benim durumumdaki çözüm şuydu:

  1. Paralel yapıları devre dışı bırakın:

    • Xcode menüsü -> Ürün -> Şema -> Şemaları Yönet ...
    • Uygulamanıza çift tıklayın
    • Oluştur sekmesi -> Yapıyı Paralelleştir'in işaretini kaldırın
  2. React'i proje bağımlılığı olarak ekleyin

    • Xcode Project Navigator -> React.xcodeproj'u Kitaplıklar'dan kök ağaca sürükleyin
    • Oluşturma Aşamaları Sekmesi -> Hedef Bağımlılıklar -> + -> React ekle

1
Bunun yalnızca aşağıdan yerel 0.40+ tepki verecek şekilde yükseltme yaptığınızda gerçekleştiğini keşfettim. 0.40+ RN ile başlatılan projede paralel derlemeler zaten kapatılmış durumda.
agiaLab

20
"Kök ağaca sürükleyin" ne anlama geliyor? Ve "Derleme Aşamaları Sekmesi" ... burası React.xcodeproj'un Derleme Aşamaları mı?
GreenAsJade

2
Bu hata yeni bir hedef oluşturulduktan sonra ortaya çıktığında, 1. adım yeterlidir :)
Kepedizer

2
Expo'dan çıkarılan bir projeyle nasıl başa çıkarsınız? React.xcodeproj hiçbir yerde yok, React Podfile bağımlılıklarında
Sebastien Lorber

1
@SebastienLorber node_modules'i açın ve oradan projeyi sürükleyin
Ramon Canales

35

Devre dışı bıraktığınızdan Parallelise Buildve Reacthedefinizin üzerine hedef eklediğinizden emin olun

görüntü açıklamasını buraya girin


İlk cevabın ardından kendi kendime çözdüm, ama tepki vermek işe yaradı! Bunun inşaat süreci için gerçekte ne anlama geldiğini
anlamalıydım

1
React hedefini ekledikten sonra saçımı çekiyor ve yanlış yaptığımı düşünüyordum ama onu yukarı taşımak hile yaptı. @njoye, bunun yapım sürecinde ne anlama geldiğini açıklayabilir misiniz? Teşekkür ederim!
Eugene Kim

@EugeneKim, listedeki öğelerin sırası Apple'ın kronolojik sırayı gösterme şeklidir (bu, iOS'ta olduğu kadar OSX'te de sık sık beni rahatsız eder). Yani "React" hedefini "App" ten önce koymak, "React" den kodu sizinkinden önce oluşturacaktır. Kendi kodunuz React hedefini kullandığından, bu, oluşturulup oluşturulamayacağını etkiliyor gibi görünüyor. Muhtemelen daha sonra hedefinizde kullanılan inşa edilmekte olan dosyalar vardır.
njoye

Derleme süresini azaltmak için paralel derleme özelliğini kullanmak istiyorum
utkarsh-devops

25

HIZLI DÜZELTME (en iyisi değil)

İçe aktarma react-native başlık satırlarını değiştirin:

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

Kime:

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

Kullanmaya çalıştığım kitaplık için yapmak zorunda olduğum değişikliklere bir örnek: Kapanış # 46 - 'RCTBridgeModule.h' dosyası bulunamadı .


16
Sürüm notlarını dikkatlice okursanız, bunun aslında tam tersi olduğunu düşünüyorum - yeni / onaylanan yol #import <React/RCT...h>? burada işlemek
kullanıcı

1
Dokümanların önerdiklerinin tersine döndüğünü biliyorum, ancak belirtilen format #import "RCTBridgeModule.h"bugün benim için gerçekten daha iyi sonuç verdi.
pençeler

Benim için hata RCTFileReaderModule.h dosyasında işaretlenmiştir. #İmport ifadesini önerildiği gibi değiştirdim ancak yardımcı olmadı. Bağlantılı repo çekme talebinde değişikliğin RNFSManager.h ve RNFSManager.m'de yapıldığını görüyorum. Bu iki dosyada yapmayı denedim ama bu da yardımcı olmadı. Neyi yanlış yaptığım hakkında bir fikrin var mı?
Yossi

12

Değişiklik

  #import "RCTBridgeModule.h"

için

 #import "React/RCTBridgeModule.h"

1
Çok teşekkürler!! Çözümü bulmak için saatler harcadım. Ancak bu çözüm kurtarıcıydı. Teşekkürler!
Abhirup Mukherjee

3

React Native'i 0.40+ sürümüne yükselttikten sonra bu hatayı alan izleyiciler react-native upgradeiçin komut satırında çalıştırmanız gerekebilir .


5
Bunu şimdi deniyorum. Bunun yerine react-native-git-upgrade'i kullanmaya ne dersiniz ?
pgarciacamou

Doğru, bu diğer seçenek. İkisinin de çalışacağını düşünüyorum.
lawrence

3

Eğer Libraries/React.xcodeprojxcode kırmızı daha sonra node_modules yeniden

rm -rf node_modules && yarn

React-native 0.46.3'ten yeni oluşturduğum projem kırmızıydı: React-native init yaptığımda SI'da npm 5.3.0 ve iplik 0.24.5 var


Teşekkürler, projemi github'a zorluyordum. Ve tekrar klonlarken kırmızıyla gösterilen React kitaplıklarını kaçırıyordum. emriniz çalışıyor. 👍
Rifinio

2

Önceki yayınlarda açıklandığı gibi react-native kitaplıkların en son sürümleri ve burada son derece uyumluluk değişiklikleri var. React-native 0.40+ sürümüne yükseltmeyi planlamıyorsanız, ancak kitaplığın önceki sürümünü yüklemeye zorlayabilirsiniz, örneğin react-native-fs:

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

2

Bir hata ayıklama oluşturabildim, ancak bir arşiv oluşturamadım.

Bu sorunu React.xcodeproj/ node_modules / react-native / React dizininde bulunan Xcode'daki kök dizinime sürükleyerek çözdüm, ardından React'i oluşturma aşamaları> hedef bağımlılıklarında hedef bağımlılık olarak ekledim.


Hiçbir var React.xcodeprojiçinde /node_modules/react-native/React.
Andrew Koster

@AndrewKoster Aynı sorunu yaşıyorum
Cecil Rodriguez

@CecilRodriguez Xcode'da derlerken, Cocoapod'ları ekleyerek ve React'i Podfile'a bir pod olarak ekleyerek bunu düzeltmeyi başardım. Ancak, derlenen kitaplığı içinde kullanmaya çalıştığımda react-native run-ios, Xcode'da olmayan derleme hataları alıyorum. İlgili belgelerin tamamen olmaması sinir bozucu.
Andrew Koster

1
@Yossi Hayır, henüz değil. Denediğim tüm girişimler işe yaramadı.
Cecil Rodriguez

1
@Yossi Hayır, seninkini denedim. Şanssız. Bunun yerel modülümle bir ilgisi olduğunu düşünüyorum
Cecil Rodriguez

2

React Native 0.60'dan sonra bu sorun genellikle yeni 'otomatik bağlama' özelliği ile karıştırılmış bağlantılı bir kitaplıktan kaynaklanır. Bu benim için düzeltir

Şunu kullanarak eski kitaplığın bağlantısını kaldırın

$ react-native unlink react-native-fs

Kapsül entegrasyonunu tamamen kullanarak yenileyin

$ pod deintegrate && pod install

Şimdi çalışma alanınızı yeniden yükleyin ve temiz bir yapı oluşturun.


1

pod installYeni bağımlılıklar için komut çalıştırdıktan sonra bu hata benim için ortaya çıktı . Bunlarla birlikte React de kurulmuştu. Bu nedenle muhtemelen Xcode yolu ile karıştırılmıştır. Bu satırları PodFile'dan kaldırdım ve hata giderildi. Lütfen buradan kaldırılanların zaten Xcode'a bağlı olduğunu unutmayın.

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

Benim için bu hata yeni bir şema / hedef eklediğimde oluştu ( app.staging , uygulamaya ) ve pod yüklemesini kullanarak bölmeleri yüklediğimde .

Bu sorun, kapsüllerin tüm hedefler için paylaşılmaması nedeniyle meydana geliyor. Bu yüzden Podfile içine yeni eklenen hedef ( app.staging ) eklemem gerekiyor .

İşte benim Podfile'ım.

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

Bu hatayı create-react-native-module ile oluşturduğum her yeni modülde alıyorum . Yayınlanan çözümlerin hiçbiri benim için işe yaramadı.

Benim için işe yarayan şey, yarnöncelikle oluşturmak için yeni oluşturulan modül klasöründe çalıştığınızdan emin olmaktı node_modules/(bu adım muhtemelen açıktır). Ardından, XCode'da, varsayılan MyModuleName seçimi yerine Ürün -> Şema -> React'i seçin.


+1, modül geliştirmeye yeni başlayanlar için, geçerli bir pod dosyası oluşturup çalıştırana kadar diğer şemaları görmeyeceğinizi eklemek önemlidir pod install. create-react-native-module bunu sizin için yapıyor görünmüyor. Bir süreliğine kapattı beni. Ancak bu, geçerli bir pod dosyası oluşturup yüklemeyi çalıştırdığımda benim için çalıştı.
Elliot Rodriguez

1

Projenizdeki iOS klasörüne gidin ve bölmeyi yükleyin -

$ pod install

Pod tipi komutunun kurulumunda herhangi bir hata alıyorsanız-

$ xcode-select -p

Sonuç - /Applications/Xcode.app/Contents/Developer olmalıdır

Yol yanlışsa, iOS projenizi Xcode'da açın ve şu adrese gidin: Xcode-> tercihler-> komut satırı araçları-> Xcode'u seçin

Ve bölmeyi tekrar kurun, sorununuz çözülecektir.



0

Editörünüzden yapmak istiyorsanız, SMobile.xcscheme'yi de açın .

Ve değişim parallelizeBuildables = "NO"


0

Benim için yukarıdaki çözümlerden hiçbiri işe yaramadı ve altında işe yarayan şey buydu (zaten kontrol ettim Parallelize Buildve ekledim 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

Bu sorunla 0.58.4'ten yeni react-native sürüm 0.60.4'e yükseltme yaparken karşılaştım. İnternette bulduğum hiçbir şey bana yardımcı olmadı, ancak onu çalıştırmayı başardım:

Oluşturma ayarlarına gidin, 'Başlık arama yolları'nı arayın, girişi seçin, SİL düğmesine basın.

Bu değerleri geçersiz kıldım ve silindikten sonra varsayılanlara geri dönmüş gibi görünüyorlar. Ayrıca Cocoapods, aşağıdakilerden sonra Terminal'deki mesajlarla bundan şikayet ediyordu 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

Bir kılavuz yaptıktan sonra bu sorunla karşılaştım react-native linkRN 0.59+ üzerinde otomatik bağlantıyı desteklemeyen bir bağımlılık karşılaştım.

Çözüm, Xcode'daki Kitaplıklar klasörünün altındaki xcodeproj dosyasını seçmek ve ardından Yapı Ayarları'nda, bu ikisini (özyinelemeli) eklemek için Başlık Arama Yollarını değiştirmekti:

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

0

Paralel Oluşturmayı etkin tutmak ve eksik başlık sorunlarından kaçınmak istiyorsanız, tepki başlıklarını türetilmiş veri alanına yerleştirmek için şemanızda bir ön oluşturma adımı sağlayın. Bu durumda derleme ayarlarının React projesinden geldiğine dikkat edin. Evet, güzel bir şey değil ama işi hallediyor ve aynı zamanda yapılardan çok fazla zaman alıyor. Prebuild adım çıktısı prebuild.log'da son bulur. Kopyalamanız gereken tam üstbilgiler, projenizin yerel tepki bağımlılıklarına bağlı olacaktır, ancak bundan jist elde edeceksiniz.

Şemayı Düzenle => Oluştur

Türetilmiş veri dizinini ortam değişkenlerinden alın ve gerekli tepki başlıklarını kopyalayın.

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

Komut dosyası, build-clean sırasında çağrılır - ki bu ideal değildir. Benim durumumda, bir temizlik sırasında komut dosyasından erken çıkmama izin veren değişen bir env değişkeni var.

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

0

Pod dosyası varsa, sadece şunu yazın:

pod install

değilse: bu yüzden önce,

pod init

sonra,

pod install

terminalde. ve gitmekte iyisin.


-1

Doğru yapmak için yapabilecekleriniz:

1) npm uninstall reat-native-fskitaplığı kaldırmak için

2) npm unlink react-native-fskitaplığın bağlantısını kaldırmak için

Şimdi kitaplık başarıyla kaldırıldı ve şimdi kütüphaneyi tekrar projenize yükleyin ve bu sefer her şeyi manuel olarak bağlayın. Bazen otomatik bağlantı bu hataya neden olur.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.