ไม่พบไฟล์“ 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.