Saya mencoba menjalankan aplikasi React Native saya di XCode dan saya terus mendapatkan kesalahan ini. Saya tidak tahu bagaimana menyelesaikan masalah ini. Ada saran?
Tangkapan Layar Kesalahan di XCode:
Saya mencoba menjalankan aplikasi React Native saya di XCode dan saya terus mendapatkan kesalahan ini. Saya tidak tahu bagaimana menyelesaikan masalah ini. Ada saran?
Tangkapan Layar Kesalahan di XCode:
Jawaban:
Hapus modul node, lalu jalankan npm install
(atau lebih baik lagi utas) dan setelah semuanya selesai diunduh, jalankan react-native upgrade
yang akan memberi Anda opsi untuk mengganti file lama dengan yang template, dengan melakukan itu Anda menautkan kembali dependensi asli Anda di react-native yang mana harus memperbaiki masalah Anda. Tentu saja jangan lupa untuk membersihkan proyek Anda di Xcode.
react-native upgrade
semua pengaturan build saya dihapus.
Produk xcode-> Skema-> Kelola Skema klik '+' pada Target untuk memilih "React" dan mengatur React dibagikan.
Untuk semua yang menggunakan React Native 0.40.0 atau lebih tinggi, Header Imports memiliki perubahan besar dari RN 0.40.0 dan menghasilkan banyak kesalahan .h file tidak ditemukan. react-native-git-upgrade
memperbaiki masalah untuk saya saat dalam debug tetapi versi gagal dalam rilis / arsip.
Saya menggunakan RN 0.42.3 dengan cocoapods dan Xcode 8.2.1
Untuk memperbaiki ini sepenuhnya, buka Xcode> Produk> Skema> Edit Skema>
Sekarang bersihkan proyek dan bangun
Tidak ada saran lain yang memperbaiki kesalahan saya tetapi yang ini berhasil.
Buat file bernama ios/Podfile
di dalam aplikasi react-native Anda dengan konten berikut:
# 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
Jalankan perintah pod install
dari dalam folder ios.
Mulai ulang XCode dan kesalahan akan hilang.
Saya mengalami masalah ini setelah percobaan pertama saya menjalankan React build di XCode, dan yang harus saya lakukan hanyalah membangun dan menjalankan untuk menghilangkan kesalahan (setelah memilih tim dan penyediaan yang tepat). Kadang-kadang XCode menunjukkan kesalahan yang sebenarnya bukan kesalahan sampai ia mengkompilasi dan menautkan hal-hal untuk pertama kalinya.
Solusi yang berhasil bagi saya adalah berbagi React
skema.
Jika Anda tidak memiliki skema React, buat yang baru oleh Selecting scheme menu -> Manage Scheme -> + -> choose React
, lalu tandai skema React sebagai Shared
Selain itu, jika Anda menggunakan Xcode 10, buka File -> Project Settings
dan pilih sistem build Legacy
Saya memecahkan masalah ini dengan langkah-langkah berikut:
React.xcodeproj
dari Libraries
ke root proyek.SaleKit
) diTARGETS
Build Phases
Target Dependencies
addReact
Untuk kasus saya di ReactNative "0.54.2", saya menyelesaikannya dengan solusi berikut
Di Xcode pilih Product->Scheme->Manage Schemes
, hapus centang 'YourProject'-tvOS atur ke tidak Dibagikan
Solusi terbaik :
Buka 'Build Settings' untuk proyek Anda di Xcode, cari 'Header Search Path'.
Klik dua kali di sebelah 'Header Search Path', di mana properti lain memiliki 'ya' atau 'tidak'
Sekarang tambahkan yang berikut ke "Jalur Pencarian Header" (di bawah Pengaturan Bangun):
$(SRCROOT)/../node_modules/react-native/React
$(SRCROOT)/../node_modules/react-native/React/Base
Jangan lupa Buat keduanya rekursif.
Jalankan npm install
di direktori proyek Anda untuk menginstal dan react-native
menyelesaikan kesalahan ini.
Di dir dasar proyek saya menjalankan:
node_modules/react-native/packager/packager.sh --reset-cache
Yang menghasilkan:
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
Saya menemukan bahwa manajer paket tidak dapat berjalan ketika proses pengemasan lain sedang berjalan.
Saya menemukan prosesnya berjalan dengan:
lsof -i :8081
Dari pada saya kill 9 ...
prosesnya.
Setelah saya menutup Xcode, jalankan:
npm install
Dan mulai Xcode lagi, mulai saat ini semuanya berjalan seperti yang diharapkan !!
Saya memiliki masalah yang sama dan saya memperbaikinya dengan menempatkan RNFIRMessaging.h di atas React / RCTBundleURLProvider.h
Jadi saya akan terlihat seperti ini:
#import "AppDelegate.h"
#import "RNFIRMessaging.h"
#import <React/RCTBundleURLProvider.h>
#import <React/RCTRootView.h>
Coba yang berikut ini:
Saya menghadapi masalah yang sama. Kemudian saya telah menghapus node. Coba gunakan langkah-langkah ini
lalu buat build dan lihat
Untuk saya ganti
#import <React/RCTBundleURLProvider.h>
#import <React/RCTRootView.h>
oleh
#import <RCTBundleURLProvider.h>
#import <RCTRootView.h>
di file AppDelegate.m bekerja.
Jika Anda belum menjalankan, npm install
Anda kemungkinan besar akan mengalami masalah ini.
Saya mencoba semua saran dan tidak ada yang berfungsi di saya menghapus repo dan mengkloningnya lagi dan itu berfungsi untuk saya, jadi saran saya adalah melakukan perubahan Anda untuk mendukungnya dan mengkloning repo lagi yang berfungsi untuk saya.
Saya telah memeriksa semua jawaban yang disebutkan di atas.
Inilah solusi yang berhasil untuk saya:
LANGKAH 1:
Lari:
npm install react-native-fcm --save
Ini menghasilkan pembuatan direktori dalam proyek Anda di bawah node_modules> react-native-fcm
LANGKAH 2:
Anda perlu menambahkan '$(SRCROOT)/../node_modules/react-native-fcm/ios'
ke jalur pencarian header dalam pengaturan build.
2 langkah ini berhasil bagi saya untuk menghilangkan kesalahan.
Untuk lebih jelasnya Anda bisa melalui tautan berikut:
Untuk kasus saya, saya tidak dapat menghapus node_modules dan menginstal ulang dan saya juga tidak dapat melakukan react-native-git-updgrade
ataureact-native upgrade
karena saya ingin tetap menggunakan RN-0,59 karena .60 menyebabkan masalah pada dependensi saya.
Bagaimanapun situasi saya adalah bahwa saya kehilangan file 'React / RCTBundleURLProvider.h'. Saya sudah memiliki React yang tersedia di skema saya. Itu tidak ada di direktori perpustakaan saya. Saya memeriksa target saya pengaturan build .
Di dalam dependensi target, saya juga memiliki React di sana.
Saya menghapus ketergantungan target 'React', lalu menambahkannya kembali. folder build dibersihkan, proyek dibangun kembali. itu berhasil.
Saya menggunakan React Native 0.61. Saya membuat Ekstensi Berbagi dan mendapatkan kesalahan ini. Saya perlu mengganti:
#import "RCTBundleURLProvider.h"
dengan
#import "React/RCTBundleURLProvider.h"
Anda perlu menginstal react native, di terminal run
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
kemudian
brew install node
brew install watchman
npm install -g react-native-cli
sumber:
https://facebook.github.io/react-native/docs/getting-started.html
Pastikan jalur ke proyek Anda tidak memiliki spasi. Hanya mengganti nama folder dan menghapus spasi akan memecahkan masalah bagi saya.