`प्रतिक्रिया / RCTBridgeModule.h` फ़ाइल नहीं मिली


115

Xcode पर प्रतिक्रिया-मूल iOS ऐप बनाते समय यह त्रुटि हो रही है।

यहां छवि विवरण दर्ज करें

Npm स्थापित और rpm जोड़ने प्रतिक्रिया-देशी- fs पुस्तकालय के बाद इस त्रुटि को शुरू किया । लेकिन एक समाधान के लिए ऑनलाइन खोज के बाद, मैंने देखा कि कई लोगों को अन्य प्रतिक्रिया देशी पुस्तकालयों को स्थापित करते समय एक ही त्रुटि हो रही है।

कई द्वारा सुझाया गया एक संभावित समाधान है, "बिल्ड सेटिंग्स" के तहत निम्नलिखित जोड़ना -> "हैडर खोज पथ"।

$(SRCROOT)/../node_modules/react-native/React - (पुनरावर्ती)

लेकिन इस समाधान के साथ कोई भाग्य नहीं, अभी भी वही त्रुटि हो रही है


मुझे v0.41.2 के साथ यही त्रुटि मिल रही है, इसे <React / RCT ...> के साथ काम करना चाहिए, लेकिन यह नहीं है: /
pgarciacamou

@camou नीचे मेरा जवाब देखें; यह मदद कर सकता है
लॉरेंस

@CecilRodriguez आपके पास प्रतिक्रिया-मूल- fs के लिए कौन सा संस्करण है? यदि आप मैन्युअल रूप से XCode के साथ जोड़ रहे हैं, तो कृपया github.com/itinance/react-native-fs#adding-manually-in-xcode
शुभम खत्री

मुझे यह त्रुटि मिल रही है: मॉड्यूल को हल करने में असमर्थreact-native-webrtc
अंकिता

जवाबों:


160

मेरे मामले में यह विशेष समस्या तब हुई जब मैं आईओएस के लिए 0.40+ प्रतिक्रिया-मूल एप्लिकेशन को संग्रहीत करने की कोशिश कर रहा था (समाधान यहां पाया गया था: उन्नयन के समय विफल होने पर विश्वसनीय निर्माण^0.39.2^0.40.0 )।

क्या हुआ कि Xcode समानांतर में अभिक्रिया-मूल पुस्तकालयों के निर्माण की कोशिश कर रहा था और वास्तव में प्रतिक्रिया पुस्तकालय के निर्माण से पहले अंतर्निहित प्रतिक्रिया निर्भरताओं के साथ पुस्तकालयों का निर्माण कर रहा था ।

मेरे मामले में समाधान यह था:

  1. समानांतर बिल्ड अक्षम करें:

    • Xcode मेनू -> उत्पाद -> योजना -> किन्नर प्रबंधित करें ...
    • अपने आवेदन पर डबल क्लिक करें
    • बिल्ड टैब -> अनचेक करें पैरेलल बनाएँ
  2. एक परियोजना पर निर्भरता के रूप में प्रतिक्रिया जोड़ें

    • Xcode प्रोजेक्ट नेविगेटर -> React.xcodeproj को पुस्तकालयों से रूट ट्री तक खींचें
    • बिल्ड चरणों टैब -> लक्ष्य निर्भरता -> + -> प्रतिक्रिया जोड़ें

1
मुझे पता चला है कि यह केवल तब होता है जब आप नीचे से प्रतिक्रिया-देशी 0.40+ में अपग्रेड कर रहे हों। प्रोजेक्ट जो कि 0.40+ RN के साथ पहले से ही सम्‍मिलित हैं, समांतर बिल्ड बंद हैं।
अगियालैब

20
"रूट ट्री पर खींचें" का क्या अर्थ है? और "बिल्ड फ़ेज़ टैब" ... क्या यह रिएक्ट.एक्सकोडप्रोज़ का बिल्ड फ़ेज़ है?
ग्रीनएसजेड

2
जब यह बग एक नए लक्ष्य के निर्माण के बाद प्रकट होता है, तो चरण 1 पर्याप्त है :)
केपीडाइज़र

2
एक्सपो इजेक्टेड प्रोजेक्ट से आप कैसे निपटेंगे? मेरे पास कहीं भी React.xcodeproj नहीं है, प्रतिक्रिया पॉडफाइल निर्भरता में है
सेबस्टियन

1
@SebastienLorber खुले नोड_मॉडल और ड्रैग रिएक्शन प्रोजेक्ट को वहां से
रेमन

35

सुनिश्चित करें कि आप अक्षम करें Parallelise Buildऔर Reactअपने लक्ष्य के ऊपर लक्ष्य जोड़ें

यहां छवि विवरण दर्ज करें


पहले जवाब के बाद यह अपने आप पता चला, लेकिन आगे बढ़ने पर चाल चली गई! महसूस करने के लिए क्या है कि वास्तव में निर्माण की प्रक्रिया हालांकि के लिए किया था
njoye

1
अपने बालों को बाहर निकाल रही थी और सोच रही थी कि रिएक्ट टारगेट जोड़ने के बाद मैं क्या गलत कर रही थी लेकिन इसे आगे बढ़ाते हुए मैंने यह किया। @njoye क्या आप बता सकते हैं कि निर्माण प्रक्रिया में इसका क्या मतलब है? धन्यवाद!
यूजीन किम

@EugeneKim सूचियों में तत्वों का क्रम कालानुक्रमिक क्रम दिखाने का एप्पल का तरीका है (यह अभी भी मुझे अक्सर OSX और साथ ही iOS पर f * s है)। इसलिए "App" से पहले "React" को टारगेट बनाते हुए "React" से कोड का निर्माण अपने से पहले करें। चूंकि आपका अपना कोड रिएक्ट लक्ष्य का उपयोग करता है इसलिए यह प्रभावित होता है कि क्या यह बनाया जा सकता है। संभवत: ऐसी फाइलें बनाई जा रही हैं जो आपके लक्ष्य में उपयोग की जाती हैं।
नूजे

मैं बिल्ड टाइम को कम करने के लिए समानांतर बिल्ड फीचर का उपयोग करना चाहता हूं
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"ने आज मेरे लिए बेहतर काम किया है।
पंजा

मेरे लिए त्रुटि को RCTFileReaderModule.h फ़ाइल में ध्वजांकित किया गया है। मैंने सुझाव के रूप में #import स्टेटमेंट को बदल दिया लेकिन इससे कोई मदद नहीं मिली। मैं लिंक किए गए रेपो पुल अनुरोध में देखता हूं कि परिवर्तन RNFSManager.h और RNFSManager.m में किया गया था। मैंने इसे इन दो फाइलों में बनाने की कोशिश की, लेकिन इससे कोई फायदा नहीं हुआ। कोई आइडिया है कि मैं क्या गलत कर रहा हूँ?
योसी


3

जिन दर्शकों को यह त्रुटि 0.40+ रिएक्ट नेटिव अपग्रेड करने के बाद मिली है, आपको react-native upgradeकमांड लाइन पर चलने की आवश्यकता हो सकती है ।


5
मैं अभी यही कोशिश कर रहा हूं। इसके बजाय प्रतिक्रिया-देशी-गिट-अपग्रेड का उपयोग करने के बारे में क्या ?
परगिसियाकैमौ

वहीं, यह दूसरा विकल्प है। मुझे लगता है कि वे दोनों काम करेंगे।
लॉरेंस

3

यदि Libraries/React.xcodeprojxcode में लाल हैं, तो node_modules को फिर से इंस्टॉल करें

rm -rf node_modules && yarn

प्रतिक्रिया-मूल 0.46.3 से मेरा नया बनाया गया प्रोजेक्ट लाल था: SI ने npm 5.3.0 और यार्न 0.24.5 जब मैंने मूल निवासी init किया


धन्यवाद, मैं अपने प्रोजेक्ट को जीथब करने पर जोर दे रहा था। और जब इसे फिर से क्लोन कर रहा था तो मुझे रिएक्ट लाइब्रेरी याद आ रही थी जो लाल रंग में दिख रही थीं। आपकी आज्ञा काम कर रही है। 👍
Rifinio

2

पिछली पोस्टों में बताए गए प्रतिक्रिया-मूल पुस्तकालयों की नवीनतम रिलीज़ और यहाँ संगतता परिवर्तन है। यदि आप प्रतिक्रिया-देशी 0.40+ में अपग्रेड करने की योजना नहीं बनाते हैं, तो आप लाइब्रेरी के पिछले संस्करण को स्थापित करने के लिए बाध्य कर सकते हैं, उदाहरण के लिए प्रतिक्रिया-देशी-एफएस के साथ:

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

2

मैं एक डीबग बनाने में सक्षम था, लेकिन मैं एक संग्रह बनाने में असमर्थ था।

मैंने React.xcodeprojXcode में अपनी मूल निर्देशिका में / node_modules / react-native / React में पाए गए ड्रैगिंग द्वारा इस समस्या को हल किया , फिर React को बिल्ड चरणों> लक्ष्य निर्भरता में लक्ष्य निर्भरता के रूप में जोड़ा।


React.xcodeprojमें नहीं है /node_modules/react-native/React
एंड्रयू कोस्टर

@AndrewKoster मैं एक ही मुद्दे का सामना कर रहा हूँ
सेसिल रोड्रिगेज

@CecilRodriguez मैंने कोकोकोड को जोड़कर और पॉडफाइल में एक पॉड के रूप में रिएक्ट जोड़कर Xcode में संकलित करते समय इसे ठीक करने में कामयाब रहा। हालाँकि, एक बार जब मैं संकलित पुस्तकालय का उपयोग करने की कोशिश करता react-native run-iosहूं, तो मुझे संकलन त्रुटियां मिलती हैं जो कि Xcode में नहीं होती हैं। प्रासंगिक प्रलेखन की पूरी कमी निराशाजनक है।
एंड्रयू कोस्टर

1
@Yossi नहीं, अभी तक नहीं। मेरे द्वारा किए गए प्रयासों के सभी ने काम नहीं किया है।
सेसिल रोड्रिगेज

1
@ योसी नहीं, मैंने आपकी कोशिश की। कोई भाग्य नहीं। मुझे लगता है कि मेरे मूल मॉड्यूल के साथ कुछ करना है
सेसिल रॉड्रिग्ज

2

रिएक्ट नेटिव 0.60 के बाद यह समस्या अक्सर एक लिंक लाइब्रेरी द्वारा नई 'ऑटो-लिंकिंग' सुविधा के साथ मिश्रित होने के कारण होती है। यह मेरे लिए इसे ठीक करता है

पुरानी लाइब्रेरी का उपयोग कर अनलिंक करें

$ react-native unlink react-native-fs

पूरी तरह से उपयोग करके फली एकीकरण को ताज़ा करें

$ pod deintegrate && pod install

अब अपने कार्यक्षेत्र को फिर से लोड करें और एक साफ निर्माण करें।


1

pod installनए आश्रितों के लिए कमांड चलाने के बाद यह त्रुटि मेरे लिए दिखाई दी । साथ ही, रिएक्ट भी लगाए गए थे। इसलिए शायद Xcode पथ के लिए भ्रमित था। मैंने पॉडफाइल से इन लाइनों को हटा दिया और त्रुटि चली गई। कृपया ध्यान दें कि यहां से हटाए गए लोग पहले से ही 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 ) जोड़ा और पॉड इंस्टॉल का उपयोग करके पॉड स्थापित किए।

यह समस्या सभी लक्ष्यों के लिए साझा नहीं किए जाने के कारण होती है। इसलिए मुझे पोडफाइल के अंदर नए जोड़े गए लक्ष्य ( app.staging ) को जोड़ना होगा

यहाँ मेरा पॉडफाइल है।

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- मॉड्यूल के साथ बनाता हूं । किसी भी पोस्ट किए गए समाधान ने मेरे लिए काम नहीं किया।

मेरे लिए जो काम किया गया था, उसे बनाने के लिए सबसे पहले yarnनए बनाए गए मॉड्यूल फ़ोल्डर में चलना सुनिश्चित किया गया था node_modules/(यह कदम संभवतः स्पष्ट है)। फिर, XCode में, MyModuleName के डिफ़ॉल्ट चयन के बजाय उत्पाद -> योजना -> प्रतिक्रिया का चयन करें।


+1, मॉड्यूल विकास में नए लोगों के लिए जोड़ना महत्वपूर्ण है, जब तक कि आप एक मान्य पॉडफाइल बनाने और चलाने तक अन्य योजनाओं को नहीं देखेंगे pod install। create-react-native-मॉड्यूल आपके लिए ऐसा करने के लिए प्रकट नहीं होता है। मुझे थोड़ी देर के लिए लटका दिया। लेकिन मेरे लिए यह एक बार काम आया जब मैंने एक वैध पॉडफाइल बनाया और इंस्टॉल चलाया।
इलियट रोड्रिगेज

1

अपने प्रोजेक्ट में iOS फोल्डर में जाएं और पॉड इंस्टॉल करें -

$ pod install

यदि आपको फली टाइप कमांड की स्थापना में कोई त्रुटि मिल रही है-

$ xcode-select -p

परिणाम होना चाहिए - /Applications/Xcode.app/Contents/Developer

यदि रास्ता गलत है तो Xcode में अपना iOS प्रोजेक्ट खोलें और Xcode-> वरीयताओं-> कमांड लाइन टूल्स-> 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 बटन दबाएं।

मेरे पास ये मूल्य अधिक थे, और ऐसा लगता है कि वे हटाए जाने के बाद चूक में गिर गए। इसके बाद कोकोपोड्स टर्मिनल में संदेशों के साथ इसके बारे में शिकायत कर रहा था 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 में लायब्रेरी फ़ोल्डर के तहत xcodeproj फ़ाइल का चयन करना था और फिर बिल्ड सेटिंग्स में, इन दोनों को जोड़ने के लिए हैडर सर्च पाथ को बदलें (पुनरावर्ती):

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

0

यदि आप पैरेललिस बिल्ड को सक्षम रखना चाहते हैं और हेडर की अनुपलब्ध समस्याओं से बचना चाहते हैं, तो अपनी स्कीम में एक प्री-बिल्ड स्टेप प्रदान करें ताकि रिएक्ट हेडरों को व्युत्पन्न-डेटा क्षेत्र में डाला जा सके। ध्यान दें कि बिल्ड सेटिंग्स इस मामले में रिएक्ट प्रोजेक्ट से आ रही हैं। हाँ, यह सुंदरता की बात नहीं है, लेकिन यह काम हो जाता है और बिल्ड से बहुत समय बचता है। 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/" \;

स्क्रिप्ट एक बिल्ड-क्लीन के दौरान आह्वान करती है - जो आदर्श नहीं है। मेरे मामले में एक ईएनवी वैरिएबल है जो एक साफ के दौरान मुझे स्क्रिप्ट से जल्दी बाहर निकलने देता है।

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लाइब्रेरी को अनलिंक करना

अब लाइब्रेरी को सफलतापूर्वक हटा दिया गया है और अब अपने प्रोजेक्ट में फिर से लिब स्थापित करें और इस बार सब कुछ मैन्युअल रूप से लिंक करें। कुछ समय बाद स्वचालित लिंकिंग इस त्रुटि का कारण बनता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.