ฉันพยายามเรียกใช้แอป React Native ใน XCode และได้รับข้อผิดพลาดนี้ ฉันไม่สามารถหาวิธีแก้ไขปัญหาได้ ข้อเสนอแนะใด ๆ ?
ภาพหน้าจอของข้อผิดพลาดใน XCode:
ฉันพยายามเรียกใช้แอป React Native ใน XCode และได้รับข้อผิดพลาดนี้ ฉันไม่สามารถหาวิธีแก้ไขปัญหาได้ ข้อเสนอแนะใด ๆ ?
ภาพหน้าจอของข้อผิดพลาดใน XCode:
คำตอบ:
ลบโมดูลโหนดจากนั้นเรียกใช้npm install
(หรือดีกว่า แต่เส้นด้าย) และหลังจากดาวน์โหลดทุกอย่างเสร็จสิ้นให้เรียกใช้react-native upgrade
ซึ่งจะทำให้คุณมีตัวเลือกในการแทนที่ไฟล์เก่าด้วยเทมเพลตโดยการทำเช่นนั้นคุณจะเชื่อมโยงการอ้างอิงเนทีฟของคุณอีกครั้งใน react-native ซึ่ง ควรแก้ไขปัญหาของคุณ แน่นอนอย่าลืมทำความสะอาดโครงการของคุณใน Xcode
react-native upgrade
การตั้งค่าการสร้างทั้งหมดของฉันก็ถูกลบออก
xcode Product-> Scheme-> Manage Schemes คลิก '+' ที่ Target เพื่อเลือก "React" และตั้งค่า React จะแชร์
สำหรับทุกคนที่ใช้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> ผลิตภัณฑ์> โครงการ> แก้ไขโครงการ>
ตอนนี้ทำความสะอาดโครงการและสร้าง
ไม่มีคำแนะนำอื่นใดที่แก้ไขข้อผิดพลาดของฉันได้ แต่คำแนะนำนี้ทำได้
สร้างไฟล์ที่มีชื่อ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
เรียกใช้คำสั่งpod install
จากภายในโฟลเดอร์ ios
รีสตาร์ท XCode และข้อผิดพลาดควรจะหายไป
ฉันพบปัญหานี้หลังจากที่ฉันลองเรียกใช้ React build ใน XCode เป็นครั้งแรกและสิ่งที่ฉันต้องทำคือสร้างและเรียกใช้เพื่อให้ข้อผิดพลาดหายไป (หลังจากเลือกทีมและการจัดเตรียมที่เหมาะสม) บางครั้ง XCode จะแสดงข้อผิดพลาดที่ไม่ใช่ข้อผิดพลาดจริง ๆ จนกว่าจะรวบรวมและเชื่อมโยงสิ่งต่างๆในครั้งแรก
วิธีแก้ปัญหาที่เหมาะกับฉันคือการแบ่งปันReact
โครงการ
หากคุณไม่มี React Scheme ให้สร้างใหม่โดยSelecting scheme menu -> Manage Scheme -> + -> choose React
ทำเครื่องหมาย React Scheme เป็น Shared
นอกจากนี้หากคุณใช้ Xcode 10 ให้ไปที่File -> Project Settings
และเลือก Legacy build system
ฉันแก้ไขปัญหานี้โดยทำตามขั้นตอน:
React.xcodeproj
จากLibraries
ไปยังรากของโครงการSaleKit
) ในTARGETS
Build Phases
Target Dependencies
เพิ่มReact
สำหรับกรณีของฉันใน ReactNative "0.54.2" ฉันแก้ไขด้วยวิธีต่อไปนี้
ใน Xcode เลือกProduct->Scheme->Manage Schemes
ยกเลิกการเลือก 'YourProject'-tvOS ตั้งค่าเป็นไม่แชร์
ทางออกที่ดีที่สุด:
เปิด 'Build Settings' สำหรับโปรเจ็กต์ของคุณใน Xcode ค้นหา 'Header Search Path'
ดับเบิลคลิกที่อยู่ถัดจาก 'Header Search Path' ซึ่งคุณสมบัติอื่น ๆ จะมี 'ใช่' หรือ 'ไม่ใช่'
ตอนนี้เพิ่มสิ่งต่อไปนี้ใน "เส้นทางการค้นหาส่วนหัว" (ภายใต้การตั้งค่าการสร้าง):
$(SRCROOT)/../node_modules/react-native/React
$(SRCROOT)/../node_modules/react-native/React/Base
อย่าลืมทำให้ทั้งคู่วนซ้ำ
เรียกใช้npm install
ในไดเร็กทอรีโปรเจ็กต์ของคุณเพื่อติดตั้งเพื่อreact-native
แก้ไขข้อผิดพลาดนี้
คุณอาจกำลังวิ่งอยู่ .xcodeproj
ไฟล์หลังจากติดตั้งพ็อด
ปิดและเปิด.xcworkspace
ไฟล์ มันได้ผลสำหรับฉัน
ในฐานของโครงการที่ฉันเรียกใช้:
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 อีกครั้งตั้งแต่วินาทีนี้ทุกอย่างทำงานตามที่คาดไว้ !!
ฉันมีปัญหาเดียวกันและฉันแก้ไขโดยวางRNFIRMessaging.hไว้เหนือReact / RCTBundleURLProvider.h
ดังนั้นดูเหมือนว่าฉันจะมีลักษณะดังนี้:
#import "AppDelegate.h"
#import "RNFIRMessaging.h"
#import <React/RCTBundleURLProvider.h>
#import <React/RCTRootView.h>
ลองทำดังต่อไปนี้:
คลิก Product-> Scheme-> Manage Schemes -> + แล้วเพิ่มการตอบสนองตามที่ใช้ร่วมกัน และประกันว่าชื่อโครงการของคุณอยู่ที่นั่นด้วย
ฉันประสบปัญหาเดียวกันจากนั้นฉันได้ลบโหนดแล้วลองใช้ขั้นตอนเหล่านี้
จากนั้นสร้างและดู
ฉันพบว่าการแก้ไขปัญหานี้ของฉันหลังจากอัปเกรด React คือการเปลี่ยนการประกาศ#import "RCTBundleURLProvider.h"
เป็น#import <React/RCTBundleURLProvider.h>
สำหรับฉันเปลี่ยน
#import <React/RCTBundleURLProvider.h>
#import <React/RCTRootView.h>
โดย
#import <RCTBundleURLProvider.h>
#import <RCTRootView.h>
ในไฟล์ AppDelegate.m ทำงานได้
หากคุณไม่ได้ใช้งานnpm install
คุณมีแนวโน้มที่จะพบปัญหานี้
ฉันลองทำตามคำแนะนำทั้งหมดแล้วและไม่มีข้อเสนอแนะใด ๆ เลยฉันลบ repo และโคลนอีกครั้งและมันก็ใช้ได้ผลสำหรับฉันดังนั้นข้อเสนอแนะของฉันคือยอมรับการเปลี่ยนแปลงของคุณสำรองและโคลน repo อีกครั้งที่เหมาะกับฉัน
ฉันได้อ่านคำตอบทั้งหมดที่กล่าวมาแล้ว
นี่คือวิธีแก้ปัญหาสำหรับฉัน:
ขั้นตอนที่ 1:
วิ่ง:
npm install react-native-fcm --save
ผลลัพธ์นี้ทำให้ไดเร็กทอรีในโปรเจ็กต์ของคุณภายใต้node_modules> react-native-fcm
ขั้นตอนที่ 2:
คุณต้องเพิ่ม'$(SRCROOT)/../node_modules/react-native-fcm/ios'
เส้นทางการค้นหาส่วนหัวในการตั้งค่าการสร้าง
2 ขั้นตอนนี้ใช้ได้ผลสำหรับฉันในการลบข้อผิดพลาด
สำหรับรายละเอียดเพิ่มเติมคุณสามารถไปที่ลิงค์เหล่านี้:
สำหรับกรณีของฉันฉันไม่สามารถลบ node_modules และติดตั้งใหม่ได้และฉันก็ทำไม่ได้เช่นกันreact-native-git-updgrade
หรือreact-native upgrade
เพราะฉันต้องการอยู่บน RN-0.59 เนื่องจาก. 60 ทำให้เกิดปัญหาสำหรับการอ้างอิงของฉัน
อย่างไรก็ตามสถานการณ์ของฉันคือฉันไม่มีไฟล์ 'React / RCTBundleURLProvider.h' ฉันมี React อยู่แล้วในสคีมาของฉัน มันไม่ได้อยู่ในไดเรกทอรีไลบรารีของฉัน ฉันตรวจสอบการตั้งค่าการสร้างเป้าหมายของฉัน
ภายในการพึ่งพาเป้าหมายฉันมี React อยู่ในนั้นด้วย
ฉันลบการอ้างอิงเป้าหมาย 'ตอบสนอง' แล้วเพิ่มใหม่ ทำความสะอาดโฟลเดอร์สร้างโครงการที่สร้างขึ้นใหม่ มันได้ผล
ฉันใช้ React Native 0.61 ฉันสร้างส่วนขยายการแบ่งปันและได้รับข้อผิดพลาดนี้ ฉันต้องการเปลี่ยน:
#import "RCTBundleURLProvider.h"
กับ
#import "React/RCTBundleURLProvider.h"
คุณต้องติดตั้ง react native ใน Terminal run
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
แล้วก็
brew install node
brew install watchman
npm install -g react-native-cli
ที่มา:
https://facebook.github.io/react-native/docs/getting-started.html
ตรวจสอบให้แน่ใจว่าเส้นทางไปยังโครงการของคุณไม่มีช่องว่าง แค่เปลี่ยนชื่อโฟลเดอร์และลบช่องว่างก็แก้ปัญหาให้ฉันได้แล้ว