ไม่พบไฟล์“ RCTBundleURLProvider.h” - AppDelegate.m


124

ฉันพยายามเรียกใช้แอป React Native ใน XCode และได้รับข้อผิดพลาดนี้ ฉันไม่สามารถหาวิธีแก้ไขปัญหาได้ ข้อเสนอแนะใด ๆ ?

ภาพหน้าจอของข้อผิดพลาดใน XCode:

ภาพหน้าจอ


ฉันขอแนะนำก่อนที่จะใช้การเปลี่ยนแปลงใด ๆ เพียงแค่ทำความสะอาดโครงการของคุณและพยายามเรียกใช้เพราะสิ่งเดียวกันเกิดขึ้นในกรณีของฉัน ฉันเพิ่งทำความสะอาดโปรเจ็กต์ของฉันและเรียกใช้และมันก็ใช้งานได้
bittu

แน่นอนคุณควรเปลี่ยนคำตอบที่ถูกต้อง! คำตอบของ @mark คือคำตอบที่ถูกต้องและทุกคนก็ต้องการ
Serdar Değirmenci

คำตอบ:


64

ลบโมดูลโหนดจากนั้นเรียกใช้npm install(หรือดีกว่า แต่เส้นด้าย) และหลังจากดาวน์โหลดทุกอย่างเสร็จสิ้นให้เรียกใช้react-native upgradeซึ่งจะทำให้คุณมีตัวเลือกในการแทนที่ไฟล์เก่าด้วยเทมเพลตโดยการทำเช่นนั้นคุณจะเชื่อมโยงการอ้างอิงเนทีฟของคุณอีกครั้งใน react-native ซึ่ง ควรแก้ไขปัญหาของคุณ แน่นอนอย่าลืมทำความสะอาดโครงการของคุณใน Xcode


5
คุณสามารถใช้เครื่องมืออัปเกรดใหม่โดยใช้ Git ได้เนื่องจากมันแก้ไขข้อขัดแย้งโดยอัตโนมัติ เรียกใช้ "npm install -g react-native-git-upgrade" ตามด้วย "react-native-git-upgrade"
bitsand

2
ฉันทำตามคำแนะนำ แต่ nogo .. ฉันมี react-native เวอร์ชัน 0.41.2 มีใครสามารถแก้ไขสิ่งนี้ในเวอร์ชัน 0.41.2 ได้บ้าง? ขอบคุณ
joemalski

2
สิ่งนี้ยังไม่ได้ผลสำหรับฉัน โดยใช้ xcode 8.2.1 และตอบสนอง 0.41.2 ดั้งเดิม
Terry Ray

1
ฉันได้ลองสิ่งนี้และทำให้การตั้งค่าโครงการที่สำคัญบางอย่างหายไป ฉันกำลังสร้างส่วนขยายการดำเนินการและหลังจากเรียกใช้react-native upgradeการตั้งค่าการสร้างทั้งหมดของฉันก็ถูกลบออก
Shane O Sullivan

1
ฉันจะเพิ่มไฟล์ 'ลบ yarn.lock' เพื่อให้คุณสามารถใช้ 'npm install'
user1709076

247

xcode Product-> Scheme-> Manage Schemes คลิก '+' ที่ Target เพื่อเลือก "React" และตั้งค่า React จะแชร์


10
ฉันกด "+" และไม่มี "ตอบสนอง" ให้เลือก กล่องโต้ตอบขึ้นมาพร้อมกับ "Target: MyApp" และชื่อ: MyApp "ไม่มีอะไรระบุว่าตอบสนองหรือแชร์
Pete Alvin

สิ่งนี้เกิดขึ้นกับฉันหลังจากติดตั้ง cocopods ซึ่งสร้างไฟล์ xcworkspace xcodeproj ที่มีอยู่ของฉันไม่มี "React" เป็นตัวเลือก แต่ xcworkspace ทำ
AdamG

@PeteAlvin ฉันรัน Run "npm install -g react-native-git-upgrade ตามด้วย" react-native-git-upgrade "จากนั้นก็แสดงตัวเลือก react ให้ฉัน
Paul Fitzgerald

1
หลังจากที่ฉันสร้างสำเร็จแล้ว แต่ Run จะไม่ทำงานใน Xcode หลังจากนั้น
Lucky_girl

ขอบคุณมาก ฉันสงสัยว่าทำไมนี่ไม่ใช่วิธีแก้ปัญหาที่ยอมรับ
Gaurav Grover

19

สำหรับทุกคนที่ใช้React Native 0.40.0หรือสูงกว่า Header Imports มีการเปลี่ยนแปลงที่สำคัญจากRN 0.40.0และส่งผลให้ไฟล์. h จำนวนมากไม่พบข้อผิดพลาด react-native-git-upgradeแก้ไขปัญหาให้ฉันในขณะที่อยู่ในการดีบัก แต่การสร้างล้มเหลวในรีลีส / ที่เก็บถาวร

ฉันใช้RN 0.42.3กับ cocoapods และXcode 8.2.1

หากต้องการแก้ไขปัญหานี้ให้ไปที่ Xcode> ผลิตภัณฑ์> โครงการ> แก้ไขโครงการ>

  1. ยกเลิกการสร้างแบบขนาน ใส่คำอธิบายภาพที่นี่
  2. คลิกที่ปุ่ม + ในเป้าหมายและเพิ่มการตอบสนอง ใส่คำอธิบายภาพที่นี่
  3. ลากReact ที่เพิ่มไปด้านบนของรายการใน Targets ใส่คำอธิบายภาพที่นี่

ตอนนี้ทำความสะอาดโครงการและสร้าง


4
สิ่งนี้ไม่ได้แก้ไขสำหรับฉันตอบสนอง v.0.44.0
Justus Eapen

17

ไม่มีคำแนะนำอื่นใดที่แก้ไขข้อผิดพลาดของฉันได้ แต่คำแนะนำนี้ทำได้

1 - สร้าง Podfile

สร้างไฟล์ที่มีชื่อios/Podfileอยู่ในแอปตอบสนองของคุณโดยมีเนื้อหาต่อไปนี้:

# You Podfile should look similar to this file. React Native currently does not support use_frameworks!
source 'https://github.com/CocoaPods/Specs.git'

platform :ios, '8.0'

target '<YOUR_APP_NAME>' do
  # Fixes required for pod specs to work with rn 0.42
  react_native_path = "../node_modules/react-native"
  pod "Yoga", :path => "#{react_native_path}/ReactCommon/yoga"
  pod "React", :path => react_native_path, :subspecs => [
    'Core',
    'RCTActionSheet',
    'RCTAnimation',
    'RCTGeolocation',
    'RCTImage',
    'RCTLinkingIOS',
    'RCTNetwork',
    'RCTSettings',
    'RCTText',
    'RCTVibration',
    'RCTWebSocket'
  ]

  pod 'GoogleMaps'  # <~~ remove this line if you do not want to support GoogleMaps on iOS

# when not using frameworks  we can do this instead of including the source files in our project (1/4):
#  pod 'react-native-maps', path: '../../'
#  pod 'react-native-google-maps', path: '../../'  # <~~ if you need GoogleMaps support on iOS
end

2 - ติดตั้ง Podfile

เรียกใช้คำสั่งpod installจากภายในโฟลเดอร์ ios

3 - รีเซ็ต XCode

รีสตาร์ท XCode และข้อผิดพลาดควรจะหายไป


วิธีนี้ช่วยแก้ปัญหาได้ในระดับหนึ่ง แต่สิ่งที่ฉันพบก็คือการกำหนดค่าใหม่ดูเหมือนจะไม่เคารพลำดับการสร้างดังนั้นจึงไม่ได้ใช้สคริปต์ที่กำหนดเองโดยพื้นฐานแล้วปัญหานี้เป็นปัญหาเกี่ยวกับ react-native หรือ react-native + xcode
prog_24

9

ฉันพบปัญหานี้หลังจากที่ฉันลองเรียกใช้ React build ใน XCode เป็นครั้งแรกและสิ่งที่ฉันต้องทำคือสร้างและเรียกใช้เพื่อให้ข้อผิดพลาดหายไป (หลังจากเลือกทีมและการจัดเตรียมที่เหมาะสม) บางครั้ง XCode จะแสดงข้อผิดพลาดที่ไม่ใช่ข้อผิดพลาดจริง ๆ จนกว่าจะรวบรวมและเชื่อมโยงสิ่งต่างๆในครั้งแรก


ฉันด้วย. มันแปลกแค่สร้างและแก้ไขข้อผิดพลาดก็หายไป ฉันไม่รู้ว่าทำไม
Zhang Buzz

@PaulFitzgerald - ใบอนุญาตอะไร? ฉันไม่เชื่อว่าฉันต้องมีใบอนุญาตอะไรเลย ...
Dave Cole

8

วิธีแก้ปัญหาที่เหมาะกับฉันคือการแบ่งปันReactโครงการ

หากคุณไม่มี React Scheme ให้สร้างใหม่โดยSelecting scheme menu -> Manage Scheme -> + -> choose Reactทำเครื่องหมาย React Scheme เป็น Shared

ใส่คำอธิบายภาพที่นี่

ใส่คำอธิบายภาพที่นี่ ใส่คำอธิบายภาพที่นี่

นอกจากนี้หากคุณใช้ Xcode 10 ให้ไปที่File -> Project Settingsและเลือก Legacy build system

ใส่คำอธิบายภาพที่นี่


1
ขอบคุณ! บางครั้งก็ยากที่จะแก้ไขปัญหาประเภทนี้โดยไม่ต้องมีความรู้เกี่ยวกับการพัฒนาเนทีฟ iOS และ Android ที่ฉันคิดและเครื่องมือที่ใช้ด้วย
qasimalbaqali

1
@ onmyway133 ฉันหวังว่าฉันจะโหวตคำตอบของคุณได้มากขึ้น! ขอบคุณ
Mohammad Abbas

7

ฉันแก้ไขปัญหานี้โดยทำตามขั้นตอน:

  1. ใน xcode ให้เลือกรูทโปรเจ็กต์
  2. ลากReact.xcodeprojจากLibrariesไปยังรากของโครงการ
  3. คลิกที่ชื่อโครงการ (ในกรณีของฉันคือชื่อSaleKit) ในTARGETS
  4. เลือก Build Phases
  5. ในเมนูแบบเลื่อนลงของการTarget Dependenciesเพิ่มReact
  6. สร้างใหม่หรือรันใหม่

ใส่คำอธิบายภาพที่นี่


1
สิ่งนี้ได้ผลสำหรับฉัน! ฉันใช้ react-native-schemes-manager ดังนั้นจึงเป็นรูปแบบการแสดงละครของฉันที่จะไม่สร้างจนกว่าฉันจะเพิ่มสิ่งนี้ ก่อนหน้านี้ใช้งานได้เป็นเวลาหลายเดือนจากนั้นก็ไม่เกิดการโคลนใหม่ สงสัยว่าช่วง NPM ของฉันใน package.json นั้นกว้างเกินไป

ทำงานให้ฉันโดยไม่จำเป็นต้องลาก React.xcodeproj ออกจากโฟลเดอร์ Libraries
ErmannoS

6

สำหรับกรณีของฉันใน ReactNative "0.54.2" ฉันแก้ไขด้วยวิธีต่อไปนี้

ใน Xcode เลือกProduct->Scheme->Manage Schemesยกเลิกการเลือก 'YourProject'-tvOS ตั้งค่าเป็นไม่แชร์


1
มันใช้ได้กับฉันเวอร์ชันตอบสนองดั้งเดิม: 0.55.4 ขอบคุณ
Adarsh

1
ทำงานให้ฉัน! ฉันได้ลบเป้าหมาย tvOS ก่อนหน้านี้และลืมที่จะลบออกเป็นแบบแผน! => RN 0.56
BigPun86

4

ทางออกที่ดีที่สุด:

เปิด 'Build Settings' สำหรับโปรเจ็กต์ของคุณใน Xcode ค้นหา 'Header Search Path'

ดับเบิลคลิกที่อยู่ถัดจาก 'Header Search Path' ซึ่งคุณสมบัติอื่น ๆ จะมี 'ใช่' หรือ 'ไม่ใช่'

ตอนนี้เพิ่มสิ่งต่อไปนี้ใน "เส้นทางการค้นหาส่วนหัว" (ภายใต้การตั้งค่าการสร้าง):

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

อย่าลืมทำให้ทั้งคู่วนซ้ำ


3

เรียกใช้npm installในไดเร็กทอรีโปรเจ็กต์ของคุณเพื่อติดตั้งเพื่อreact-nativeแก้ไขข้อผิดพลาดนี้


3

คุณอาจกำลังวิ่งอยู่ .xcodeprojไฟล์หลังจากติดตั้งพ็อด

ปิดและเปิด.xcworkspaceไฟล์ มันได้ผลสำหรับฉัน


2

ในฐานของโครงการที่ฉันเรียกใช้:

node_modules/react-native/packager/packager.sh --reset-cache

ซึ่งส่งผลให้:

Scanning 554 folders for symlinks in /Users/..../work/..../react_tutorial/AwesomeProject/node_modules (15ms)
 ┌────────────────────────────────────────────────────────────────────────────┐
   Running packager on port 8081.                                            
                                                                             
   Keep this packager running while developing on any JS projects. Feel      
   free to close this tab and run your own packager instance if you          
   prefer.                                                                   
                                                                             
   https://github.com/facebook/react-native                                  │
                                                                             
 └────────────────────────────────────────────────────────────────────────────┘
Looking for JS files in
   /Users/..../work/...../react_tutorial/AwesomeProject

Loading dependency graph... ERROR  Packager can't listen on port 8081
Most likely another process is already using this port
Run the following command to find out which process:

lsof -i :8081

ฉันพบว่าตัวจัดการแพ็กเกจไม่สามารถทำงานได้เมื่อกระบวนการแพ็กเกจอื่นกำลังทำงานอยู่

ฉันพบว่ากระบวนการทำงานด้วย:

lsof -i :8081

กว่าฉัน kill 9 ...กระบวนการ

หลังจากฉันปิด Xcode แล้วให้รัน:

npm install

และเริ่ม Xcode อีกครั้งตั้งแต่วินาทีนี้ทุกอย่างทำงานตามที่คาดไว้ !!


2

ฉันมีปัญหาเดียวกันและฉันแก้ไขโดยวางRNFIRMessaging.hไว้เหนือReact / RCTBundleURLProvider.h

ดังนั้นดูเหมือนว่าฉันจะมีลักษณะดังนี้:

#import "AppDelegate.h"
#import "RNFIRMessaging.h"

#import <React/RCTBundleURLProvider.h>
#import <React/RCTRootView.h>

2

ลองทำดังต่อไปนี้:

  1. ทำความสะอาด ( cmd+ shift+ K)
  2. สร้าง core React - เลือก React เป็นแบบแผนใน Xcode และสร้าง ( cmd+ B)
  3. สร้างไลบรารีที่ล้มเหลว (เช่น RCTText)
  4. สร้างแอปของคุณ

1
คุณสร้างห้องสมุดได้อย่างไร?
AlxVallejo

2

คลิก Product-> Scheme-> Manage Schemes -> + แล้วเพิ่มการตอบสนองตามที่ใช้ร่วมกัน และประกันว่าชื่อโครงการของคุณอยู่ที่นั่นด้วย


1

ฉันประสบปัญหาเดียวกันจากนั้นฉันได้ลบโหนดแล้วลองใช้ขั้นตอนเหล่านี้

  1. ลบโฟลเดอร์ node_modules - rm -rf node_modules && npm install
  2. รีเซ็ตแคชของแพ็กเกจ - rm -fr $ TMPDIR / react- * หรือ node_modules / react-native / packager / packager.sh --reset-cache
  3. นาฬิกายามที่ชัดเจน - watchman watch-del-all

จากนั้นสร้างและดู


ใช่ฉันลองสิ่งนี้กับเวอร์ชัน react-native 0.41.2 แล้วยังใช้งานไม่ได้เช่นกัน ... อินพุตใด ๆ ? ขอบคุณ
joemalski

1

ฉันพบว่าการแก้ไขปัญหานี้ของฉันหลังจากอัปเกรด React คือการเปลี่ยนการประกาศ#import "RCTBundleURLProvider.h"เป็น#import <React/RCTBundleURLProvider.h>


1

สำหรับฉันเปลี่ยน

#import <React/RCTBundleURLProvider.h>
#import <React/RCTRootView.h>

โดย

#import <RCTBundleURLProvider.h>
#import <RCTRootView.h>

ในไฟล์ AppDelegate.m ทำงานได้



0

ฉันลองทำตามคำแนะนำทั้งหมดแล้วและไม่มีข้อเสนอแนะใด ๆ เลยฉันลบ repo และโคลนอีกครั้งและมันก็ใช้ได้ผลสำหรับฉันดังนั้นข้อเสนอแนะของฉันคือยอมรับการเปลี่ยนแปลงของคุณสำรองและโคลน repo อีกครั้งที่เหมาะกับฉัน


0

ฉันได้อ่านคำตอบทั้งหมดที่กล่าวมาแล้ว

นี่คือวิธีแก้ปัญหาสำหรับฉัน:

ขั้นตอนที่ 1:

วิ่ง:

npm install react-native-fcm --save 

ผลลัพธ์นี้ทำให้ไดเร็กทอรีในโปรเจ็กต์ของคุณภายใต้node_modules> react-native-fcm

เพิ่ม react-native-fcm ในโครงการของคุณ

ขั้นตอนที่ 2:

คุณต้องเพิ่ม'$(SRCROOT)/../node_modules/react-native-fcm/ios'เส้นทางการค้นหาส่วนหัวในการตั้งค่าการสร้าง

เพิ่มในเส้นทางการค้นหาส่วนหัว

2 ขั้นตอนนี้ใช้ได้ผลสำหรับฉันในการลบข้อผิดพลาด

สำหรับรายละเอียดเพิ่มเติมคุณสามารถไปที่ลิงค์เหล่านี้:

https://github.com/evollu/react-native-fcm/issues/63

https://github.com/evollu/react-native-fcm/issues/21


0

สำหรับกรณีของฉันฉันไม่สามารถลบ node_modules และติดตั้งใหม่ได้และฉันก็ทำไม่ได้เช่นกันreact-native-git-updgradeหรือreact-native upgradeเพราะฉันต้องการอยู่บน RN-0.59 เนื่องจาก. 60 ทำให้เกิดปัญหาสำหรับการอ้างอิงของฉัน

อย่างไรก็ตามสถานการณ์ของฉันคือฉันไม่มีไฟล์ 'React / RCTBundleURLProvider.h' ฉันมี React อยู่แล้วในสคีมาของฉัน มันไม่ได้อยู่ในไดเรกทอรีไลบรารีของฉัน ฉันตรวจสอบการตั้งค่าการสร้างเป้าหมายของฉัน

ภายในการพึ่งพาเป้าหมายฉันมี React อยู่ในนั้นด้วย

ฉันลบการอ้างอิงเป้าหมาย 'ตอบสนอง' แล้วเพิ่มใหม่ ทำความสะอาดโฟลเดอร์สร้างโครงการที่สร้างขึ้นใหม่ มันได้ผล


ไม่แน่ใจว่าสำคัญ แต่มีการพิมพ์ผิดใน: react-native-git-updgrade
Josh

0

ฉันใช้ React Native 0.61 ฉันสร้างส่วนขยายการแบ่งปันและได้รับข้อผิดพลาดนี้ ฉันต้องการเปลี่ยน:

#import "RCTBundleURLProvider.h"

กับ

#import "React/RCTBundleURLProvider.h"


-2

ตรวจสอบให้แน่ใจว่าเส้นทางไปยังโครงการของคุณไม่มีช่องว่าง แค่เปลี่ยนชื่อโฟลเดอร์และลบช่องว่างก็แก้ปัญหาให้ฉันได้แล้ว

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.