React-native'de 'Paket URL'si yok'un anlamı nedir?


200

Yerel bir proje yürüttüğümde bir hata alıyorum no bundle URL present, ama hangi hataları yaptığımı bilmiyorum, çok kafam karıştı.

resim açıklamasını buraya girin


2
Bu sorunla yerel iOS uygulamasında tepki verdim. Sadece xcodeproj dosyasını ios klasöründe xcode içinde açın ve oradan çalıştırın. Proxy kullanmadığınızdan emin olun.
Abhay Shiro

9
Çoğu zaman, inşa dizini temizlemek bana yardımcı olurrm -rf ios/build/
onmyway133

Bu çoğu durumda bana yardımcı oluyor. Ancak bu özel durumda bu hatayı bu komutla düzeltebiliyorum (tepki-yerel: "0.60.4"):watchman watch-del-all
O. Borcuhin

Bu genellikle metro paketleyicinizin çalışmadığı anlamına gelir, bazı insanlar bunu kendi terminallerinde veya standart bilgisayar terminalinde çalıştırır. Genellikle terminali kapatırım, uygulamayı yeniden başlatırım ve bu da onu düzeltir.
Sara Inés Calderón

Yanıtlar:


128

Hatayı şu şekilde çözün No bundle URL present:

  • İOS derleme dizinini silmek ve yeniden oluşturmadan önce diğer React Native oturumlarını (varsayılan 8081 bağlantı noktasında çalıştığı varsayılarak) öldürmek için proje kök dizininizde aşağıdaki komutu çalıştırın:

rm -rf ios/build/; kill $(lsof -t -i:8081); react-native run-ios

  • Yukarıdaki komut kombinasyonunu bir takma adda birleştirip Bash yapılandırma dosyasına .bashrc'yi bu komutla ekleyerek bu hatayı önlemek için React Native iş akışınızı güncelleyin:

echo "alias rni=\"kill \$(lsof -t -i:8081); rm -rf ios/build/; react-native run-ios\"" >> ~/.bashrc; source ~/.bashrc

Artık React Native iOS derlemesini (ölümün sık görülen kırmızı hata ekranlarından bazıları hakkında endişelenmeden) basit bir takma ad kısayoluyla çalıştırabilirsiniz:

rni


1
Benim için çok faydalı. Yapmam gereken tek şey, daha önce kapatılmamışsa simülatörden çıkmaktı.
AnnawanDev

74

Ben de bu sorunla karşılaştım (ilk kez React Native ile çalışmaya başlıyorum). Bir ios simülasyonu ( react-native run-ios) çalışırken - koştum npm installve sonra react-native run-iostekrar sorun ortadan kalktı . Terminal penceresinde, paketlendiğini gösterdi ve sonra simülatör karşılama ekranını gösterdi.

react-native init PropertyFinderHat kullanmaya çalıştıktan sonra bu bağlantıyı kontrol edinnpm start (Bu benim için çalışıyor)

================================================== ======================

16.9 GÜNCELLEME

8081 numaralı bağlantı noktam McAfee tarafından engellendi. Farklı bir bağlantı noktasını doğrudan kullanmak işe yaramadı react-native start --port=8082vereact-native run-ios --port=8082

Burada verilen hemen hemen tüm çözümleri denedim. ama hiçbir şey işe yaramadı.

        "react": "16.9.0",
        "react-dom": "^16.12.0",
        "react-native": "0.61.5",

Çözüm:

Xcode'da 8081 arandı ve hepsini 8082 ile değiştirdi. Sonra uygulamayı oluşturmak ve çalıştırmak için aynı komutları çalıştırın. Uygulama sorunsuz çalışıyor

react-native start --port=8082
react-native run-ios --port=8082

resim açıklamasını buraya girin


2
@dcp Önceden başlatılmış durumdayken "tepki yerel çalıştırma-ios" komutunu birden çok kez çalıştırmayı denediniz mi? Uygulamamı her açtığımda en az iki kez yapmam gerekiyor gibi görünüyor (her zaman arasında yaklaşık 2 dakika bekliyorum).
atla

benim için çalışıyor, ancak her seferinde bu adımı içermeyen uzun vadeli bir düzeltme bulmayı çok isterim.
mheavers


29

Hata mesajında ​​belirtildiği gibi:

Xcode / iOS lisansını kabul etmek için yönetici ayrıcalıkları gerekir, lütfen "sudo xcodebuild -license" komutunu çalıştırın ve ardından bu komutu yeniden deneyin.

Aşağıdaki komutu çalıştırmak işe yaradı:

sudo xcodebuild -license

tks bu terminalde çalıştırdıktan sonra benim için çalışmak ve xcode içinde inşa ettikten sonra
tess hsu

Hayır! Hala benim için çalışmıyor. Farklı bir limanda koşuyorum, 8081 engellendi
Ashish Singh Rawat

28

Bu sorun, localhost üzerinden güvenli olmayan bağlantılara izin vermediğinizde veya http yoluyla güvenli olmayan bağlantıları kabul etmeye çalıştığınızda oluşur.

Bunu düzeltmek için şunu ekleyin info.plist:

<key>NSAppTransportSecurity</key>
    <dict>
        <key>NSAllowsArbitraryLoads</key>
        <true/>
        <key>NSAllowsArbitraryLoadsInWebContent</key>
        <true/>
        <key>NSAllowsLocalNetworking</key>
        <true/>
    </dict>

4
Bu adam ne kahraman. Beni ve macbook'umu pencereden atlayarak kurtardım! İstisna localhostalanımı Info.plist'teki yerel ağ adresime değiştirdim ve bu nedenle çözümlenmiyordu. Bir istisna etki alanı olarak 'localhost' için bir blok ekledim ve işe yaradı.
Darius

1
Cidden cevabın bana tanrı gibi geldi ... abi kardeşim ..... Hiç sözüm yok. Teşekkürler, Perşembe gününe takıldım.
Tushar Pandey

26

Simülatörünüzü ve terminali kapatın. Yenisini açın ve projenize gidin, ardından yerel yanıtınızı aşağıdaki gibi yükseltin:

react-native upgrade

Sorun: Paket yürütülemediğinde RCTFatal'da sonsuz özyineleme .


1
evet, ama benim durumumda yükseltme gerek yoktu. Terminali ve simülatörü kapatmak benim için yeterliydi.
Gianni

@gianni Şu anda hangi yerli tepki sürümü kullanıyorsunuz?
Mateo Marconi

1
Herhangi bir fark yaratmadı, hala hatayı görüyor.
SSH Bu

2
Bu benim için çalıştı, ancak simülatörü de kapatmalı ve daha sonra yerli-yerli run-ios'u çalıştırmalısınız
James O'Brien

1
Yardımcı olmadı `` bilgi Hiçbir sürüm geçmedi. En son getiriliyor ... uyar Belirtilen sürüm "0.61.5", node_modules içinde zaten kurulu ve "0.61.5" semver aralığını karşılıyor. Yükseltmeye gerek yok ``
Ashish Singh Rawat

19

Sebep:

Bunun nedeni, uygulamanın sunucuyu bulamamasıdır (bu, kullanıcı arayüzüne hizmet eder - javascript koduna göre).

Çözüm:

  • Yerel tepki ile ilgili her şeyin kapalı olduğundan emin olun (gerekli değil, sadece çözümüm için temiz bir başlangıç ​​yapmak için, açıklamamdan sonra, bunun gerekli olup olmadığını anlayabilirsiniz)
  • koş npm run startya da yarn startilk
  • bu komutun işini bekle (genellikle göreceksin Loading dependency graph, done. )
  • Çalıştırmak react-native run-ios/android

Açıklama:

  • React Native 2 parça ile birlikte gelir:

    • Yerel bölüm
    • Javascript bölümü
  • Derleme komutları:

    • react-native run-ios/androidyerel parça oluşturmak sonra cihazlara dağıtmak ve cihazlarda (simülatör / emülatör / gerçek cihaz) uygulamayı başlatmaktır. Bu genellikle bitirmek için 3 ~ 4 dakika sürdü.

    • npm run startveya yarn startjavascript bölümünü oluşturmak ve uygulama için yerleşik kullanıcı arayüzünü sunmak üzere dev sunucusunu başlatmaktır. Bu işlemin tamamlanması genellikle 30 saniye sürdü.

=> Normalde, javascript kısmı önce bitirilir, ardından yerel kısım daha sonra gelir. (kullandıkları zamana göre).

=> bu sadece ilk kez inşa için geçerlidir (yeni inşa).

=> yeniden inşa etmek için:

  • Yerel bölüm, değişiklikleri kontrol etmek için sadece 10 ~ 15 saniye sürdü ve çünkü javascript bölümü oluşturulup sunulmadan önce yerel bölüm için değişiklik yapılmadı. (Javascript bölümünün yeniden oluşturulduğundan emin değilim ama yerel bölümden daha uzun sürdü)

  • Bu yüzden bu sorunu yaşadık, uygulama henüz var olmayan bir şeyi çalıştırdı ve gerekli kıldı.

Bonus:

  • react-native run-ios/android sizin için dev sunucusunu otomatik olarak başlatır.
  • Bu yüzden react-native run-ios/androidhemen koştuğunuzdareact-native init <app_name> koştuğunuzda her şey yolunda gitti. (çünkü otomatik başlatma özelliği ve yukarıdaki durum olarak yeni inşa etme süresi alınmıştır).
  • Diğer "sökme" çözümleri, yeniden inşayı zorladıkları için işe yaradı.

Bu cevapta kullanılan süre makinemle göreceli idi => diğerlerinde farklı olabilir.


14

Bu kodu çalıştırmayı deneyin:

$ sudo xcodebuild -license

Bu sorunu çözebilir. Bu benim için çalışıyor.


11

Aynı hatayı aldım ve uygulamayı sadece Xcode ile çalıştırabildim. react-native run-iosişe yaramadı. Sorunu çözmek için buildadresindeki klasörü kaldırmanız gerekiyor YOUR_PROJECT/ios/build/. Bundan sonra uygulamanızı react-native run-iostekrar çalıştırabilmeniz gerekir . Bu yardımcı olur umarım.


9

Çoğu durumda, DNS araması / IP araması localhost'u bulamadığında bu sorun oluşur.

Çözüm :

Etc host dosyanıza localhost ip'i eklemeyi deneyin.

etc host dosyanıza (/ etc / hosts) aşağıdaki satırları ekleyebilirsiniz

127.0.0.1 localhost

255.255.255.255 yayın barındırıcısı

:: 1 l. ocalhost

Sorunun bu olduğunu doğrulamak için safari üzerindeki paket URL'sini vurabilirsiniz (kromda denerseniz bu çözülür, ancak safari çözemez). http: // localhost: 8081 / index.ios.bundle platformu = ios & dev = true & küçültmek = false


Yepyeni bir bilgisayara geçtikten sonra ihtiyacım olan buydu. TY!
jeffctown

Aynen burada yeni bir bilgisayarda!
Vishal Sakaria

Benim sorunum ağ yapılandırmasında proxy ayarlamaktı, ben sadece proxy kaldırmak ve iyi çalışıyor.
Ahmad Khani

8

.Plist dosyasında ATS ayarlarınızın doğru olduğundan emin olun.

Dosyayı / ios/{{project_name adresinde bulabilirsiniz } //Info.plist

localhost, aşağıdaki gibi istisna istek hedefi olarak tanımlanmalıdır:

<key>NSAppTransportSecurity</key>
    <dict>
    <key>NSExceptionDomains</key>
    <dict>
        <key>localhost</key>
        <dict>
            <key>NSExceptionAllowsInsecureHTTPLoads</key>
            <true/>
        </dict>
    </dict>
</dict>

* (yayın sürümünde bunu kaldırmayı unutmayın ..)


7

Benim için sorun JS paketini oluşturamıyordu. Xcode'dan inşa ederken hatayı belirtmez, bu yüzden bunu bilmenin bir yolu yoktur. Hatayı bulmak için aşağıdaki komutu çalıştırın.

react-native bundle --platform ios --dev false --entry-file index.ios.js --bundle-output ./ios/release/main.jsbundle --assets-dest ./ios/release/main.jsbundle

Benim için hata, PureRenderMixin bileşeninin eksik olduğu bir şeydi. Çözüme buradan ulaşabilirsiniz: https://github.com/facebook/react-native/issues/13078 . Temel olarak reat@16.0.0-alpha.3 komutunu manuel olarak yüklemeniz gerekir. Bu, bu komut çalıştırılarak yapılabilir.

npm i --save react@16.0.0-alpha.3

Bu sorun şimdi herkes için oluyor çünkü reaksiyon alfalarının daha yeni sürümleri yayınlanıyor (özellikle alfa.5) ve tepkimeye özgü yapıları bozuyorlar.


'reat-native bundle --platform ios --dev false --entry-file index.ios.js --bundle-output ./ios/release/main.jsbundle --assets-dest ./ios/release/ main.jsbundle ', paketi oluştururken oluşan hataları açıklar. bu komut başarılı olana kadar run-ios çalışmaz
eric f.

şu anki hatam, 'tepki-redux' '' connect 'bir şekilde tanınmıyor?
eric f.

Belki "plugins": ["transform-decorators-legacy"].babelrc dosyanıza eklemeyi deneyin . Veya connect HOC ile deneyin.
urbancvek

@urbancvek, benim için hata bu The node type SpreadProperty has been renamed to SpreadElementve onun @babeliçinde referans kütüphanesi node_modules, ben bunu ele hiçbir şey bulamadık.
Daniel

7

Çözüm -> npm startsonra yeni Terminal'i açın ve proje yolunuza gidin ve sonra react-native run-iosbenim için işe yarıyor


7

Benim için ne çözdü:

  • Bir terminal penceresi açın
  • cd içine YOUR_PROJECT/ios
  • İle derleme klasörünü kaldırın rm -r build
  • Çalıştırmak react-native run-iosTekrar

Alternatif olarak, Finder'ı açabilir, şuraya gidebilirsiniz: YOUR_PROJECT/ios , buildklasöre gidip silebilirsiniz .

O zaman koş react-native run-ios tekrar .

Kaynak: Andrew Bancroft


5

Bu, yerel tepki v0.42.1 ile ilgili bir sorundur. Tüm terminal ve XCode örneklerini kapatmayı ve çalıştırmayı deneyin:

launchctl unload ~/Library/LaunchAgents/com.github.facebook.watchman.plist
watchman version
react-native run-ios

3
"Bu, tepki yerli v0.42.1 ile ilgili bir sorundur." - v.0.43 ile de var.
dcp

5

önce simülatörü kapatın, sonra bunları terminalde çalıştırın

npm install

react-native run-ios

5

Sadece Terminal'de çalıştırın react-native start:

cd your react native app directory/ react-native start 

Paketleyiciyi başlatacak, şimdi bu terminal penceresini kapatmayın, projenizi başka bir terminal penceresinde çalıştırın. Düzgün çalışması için bulduğum tek şey bu.


4

Bunu atlamanın en kolay / en hızlı yolunu simülatör (2 x Cmd + Shift + H) içinde uygulamadan çıkmak ve yeniden başlatmaktır.


4

Aynı sorunu yaşadım. Ama benim sorunum Mac ve iPhone'umun aynı wifi ağında olmamasıydı.

Bu yüzden hepsinin aynı ağda olduğundan emin olun ve bir kez daha yeniden oluşturun. Aksi takdirde, burada diğer üyelerin bahsettiği çözümleri deneyin.


3

ağ proxy'nizi kontrol edin, daha iyi kapatın.

veya u paket sunucusunu korumak için başka bir yol bulmak gerekir


Teşekkürler, Büyük Yangın Duvarını geçmek için küresel VPN'i açtım!
BaiJiFeiLong

Mac'te otomatik proxy yapılandırmasını devre dışı bıraktım. 2 günlük çabalardan sonra çalıştı: D ... Teşekkürler.
Nirav Jain

Gerçekten de hatırlamadığım bir VPN çalıştırıyordum. Kapatmak işe yaradı!
Pedro Marques

3

Mac'imi yeniden başlattıktan sonra da başıma geldi. Uygulamanızı simülatörde çalıştırdığınızda açılan bir launchPackager terminal penceresi var. Bu pencereyi kapattım ve işlemi sonlandırdım (simülatörü de kapattım), sonra tekrar reaksiyona-yerel run-ios'u çalıştırın ve her şey iyi çalışıyor.


3

Benim durumumda, adbsunucu yeniden başlatılarak sorun giderildi :adb kill-server && adb start-server


3

Benim için de bu sorunu yaşadım ... Sorun packer çalışmıyor değildi, varsayılan kabuğum zsh olduğundan muhtemelen görünüyordu. yeni bir terminal penceresi açmak ve çalıştırmak için yerel lastiklere tepki verin, .../node_modules/react-native/packager/launchPackager.commandancak bu çalışmadı. Bunu manuel olarak çalıştırmak (ve çalışmasını sağlamak) bunu benim için düzeltti.


3

info.plist adresindeki NSExceptionDomains dict'teki 'localhost' anahtarınızı kontrol edin

yoksa, hataya neden olur.


2

Kullandığınızı nvmve düğümün birden çok sürümünü yüklediğinizi varsayarsak , işte çözüm:

  1. Çalıştırmak söyle npm install -g react-native-clide node v6.9.5.
  2. Şimdi yap node v6.9.5 çalıştırarak varsayılan olarak yapnvm alias default 6.9.5
  3. Şimdi koş react-native run-ios

Sorun, üzerinden düğümün birden çok sürümünün yüklü olması nvmve yüklemek için react-native-cli, düğümün henüz işaret edilmemiş varsayılan düğüm olarak işaretlenmemiş olan en son sürümünü değiştirmiş veya yüklemiş olmanızdır nvm. Çalıştırdığınızda react-native run-ios, varsayılanın nvmyüklediğiniz düğüm sürümüne işaret etmediği başka bir yeni terminal penceresi açılır react-native-cli. Sadece yukarıdaki kurulumu takip edin, umarım bu yardımcı olacaktır.


2

projenizde .jsbundle olduğundan emin olun

Ekle

react-native bundle --dev false --entry-file index.js --bundle-output ios/main.jsbundle --platform ios

tepki yerel kodunuzda projeyi yeniden açmayı deneyin


1

İle çalışıyorum RN 0.49.5. Birçok yöntem denedim, ama kimse çalışmıyor. Sonunda bunu hallettim. Çok basit ve kolaydır.

Ana fikri değiştirmektir localhostiçin 127.0.0.1ancak RN anlatır nerede o değil. Bu öyle RCTBundleURLProvider.m # - (BOOL) isPackagerRunning: (NSString *) konak .

Kod değişiklikleri: oc - NSString *host = ipGuess ?: @"localhost"; + NSString *host = ipGuess ?: @"127.0.0.1"; Bu simülatör için uygun. Cihazsa, ip adresini makinenizin adresine değiştirin.


Çözümünüzü biraz açıklayabilir misiniz?
Ashish Singh Rawat

1

benim için çalışan başka bir şey, projeyi xcode içinde açmak ve sonra temizleyip inşa etmektir. Genellikle paketleme sunucusunu yeniden çalıştırır ve sorunu çözer.


1

Aşağıdaki komutu yürütün:

killall -9 node
rm -rf ios/build
react-native run-ios

launchpackager.command dosyasını açacak ve uygulama ios simülatörüne yüklenecek


0

launchPackage.commandBir terminalde çalıştığınızdan emin olun ve tekrar çalıştırmayı deneyin. Paketi oluşturacak. Bu tür webpack-dev-server gibi.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.