React Native'da nasıl hata ayıkladınız?


265

Uygulama uygulama simülatöründe çalışırken React Native ile React kodunda nasıl hata ayıklanır?



Bu cevapların dışında, VS Kodu üzerinde çalışıyorsanız ve Chrome yerine hata ayıklamak istiyorsanız, bu yanıtı kontrol edin
gprathour

Yanıtlar:


159

Cmd+DSimülatör içinden. Chrome açılır ve oradan Geliştirici Araçlarını kullanabilirsiniz.

Düzenle:

Bu, artık yardım belgelerine bağlanmıştır .


8
V8.2 simülatörü kullanarak Cmd + D hiçbir şey yapmıyor gibi görünüyor. Chrome en son sürüm. Chrome'da bazı özel eklentiler veya proxy var mı?
McG

5
"Websocket hata ayıklayıcı kullanılamıyor. RCTWebSocketExecutor'u eklemeyi unuttunuz mu?" : /
Tyler McGinnis

1
Aşağıdaki hatayı aldım: /Users/Serge/projects/serge/MyProject/node_modules/react-native/packager/launchChromeDevTools.applescript:668:671: komut dosyası hatası: Beklenen sınıf adı ancak bulunan özellik. (-2741). Windows uygulamalarını Mac ile Parallels'te paylaşmayı devre dışı bıraktığımda çalışmanın başladığını öğrendim. Bkz. Stackoverflow.com/questions/29310936/… .
Serge van den Oever

5
Yani olacak Cmd+MOS X ve Android'de
pul pul

2
Yapılandırma Yapılandırmanız "Serbest Bırak" olarak ayarlanmışsa Cmd + D'nin hiçbir şey yapmayacağını unutmayın - "Hata Ayıkla" olarak ayarlandığından emin olun.
jwinn

79

Yerel Uygulamalarda Hata Ayıklama

Reaksiyon uygulamanızın javascript kodunda hata ayıklamak için aşağıdakileri yapın:

  1. Uygulamanızı iOS simülatöründe çalıştırın.
  2. Basın Command + Dve bir web sayfası http: // localhost: 8081 / debugger-ui adresinde açılmalıdır . (Yalnızca şimdilik Chrome) veyaShake Gesture
  3. Daha iyi bir hata ayıklama deneyimi için Yakalanan İstisnalarda Duraklat'ı etkinleştirin .
  4. Command + Option + IChrome Geliştirici araçlarını açmak için basın veya View-> Developer-> ile açın Developer Tools.
  5. Artık normalde yaptığınız gibi hata ayıklayabilirsiniz.

İsteğe bağlı

Google Chrome için React Geliştirici Araçları uzantısını yükleyin . Bu React, geliştirici araçları açıkken sekmeyi seçerseniz görünüm hiyerarşisinde gezinmenizi sağlar .

Canlı Yeniden Yükleme

Canlı Yeniden Yüklemeyi etkinleştirmek için aşağıdakileri yapın:

  1. Uygulamanızı iOS simülatöründe çalıştırın.
  2. Düğmesine basın Control + Command + Z.
  3. Artık görecek Enable/Disable Live Reload, Reloadve Enable/Disable Debuggingseçenekler.

Bu cevap temel olarak bir başlangıç ​​olan ancak özellikle aydınlatıcı olmayan dokümanı kopyalar. Bu bağlamda "normalde yaptığınız gibi hata ayıklama" ne anlama gelir?
GreenAsJade

6
Önemli not: React Developer Tools aylardır React Native ile çalışmıyor ve düzeltilmesi gerekiyor. Daha fazla bilgi için: github.com/facebook/react-devtools/issues/229
Lane Rettig

Bunun Mac'te olduğunu kim söyledi?
shinzou

@ shinzou bir simülatörden söz ediyor (iOS geliştiricileri için simülatörü, Android geliştiricileri için emülatörü). Evet, bir süre geçtiğini biliyorum, ama yine de, sadece FWIW
Konrad Morawski

58

Bir Android Uygulaması için, Genymotion kullanıyorsanız tuşuna basarak menüyü değiştirebilirsiniz CMD + m, ancak bunu yaparak menüde etkinleştirmeniz gerekebilir.

  • Widget untick
  • Chrome'da hata ayıklama'yıCMD + m tıklayarak etkinleştirin

5
Sonunda bir Android çözümü buldum, teşekkürler! Ve en son sürümde, debug in chromeile değiştirilir start debug remotely.
MewX

@MewX Bunun nasıl yapılacağını bize bildirir misiniz? 🤔
Mo

@Muhammed Merhaba, simülatörünüzdeki açılır pencereleri takip edebilir cmd + mveya ctrl + mseçebilirsinizstart debug remotely
MewX

31

Diğer cevaplara ek olarak. Reaug-native hata ayıklayıcı deyimini kullanarak hata ayıklayabilirsiniz

misal:

debugger; //breaks execution

Bunun çalışması için chrome dev araçlarınızın açık olması gerekir


Ya! Buna ihtiyacım vardı! Teşekkürler arkadaşım!
I_am_learning_now

27

Windows'da android cihaz kullanarak hata ayıklamak istiyorsanız, sadece bir komut istemi açın ve yazın (adb'nizin düzgün çalıştığından emin olun)

adb shell input keyevent 82

görüntü gibi bir ekran isteyecektir resim açıklamasını buraya girin

sonra seçin

debug JS Remotely

otomatik olarak yeni bir pencere açılacaktır. sonra denetleme elemanını açın veya konsol için F12 tuşuna basın.


bu komuta eşdeğer bir iOS var mı? Yakın zamanda RN ile başladım ve bu gelecekte çok yardımcı olacak
Juan Carlos Alpizar Chinchilla

26

resim açıklamasını buraya girin

Bu programı deneyin: https://github.com/jhen0409/react-native-debugger

Çalışır: windows, osxvelinux .

Destekler: react native veredux

Ayrıca, sanal bileşen ağacını inceleyebilir ve uygulamaya yansıyan stilleri değiştirebilirsiniz.


Bu hata ayıklayıcı aracılığıyla belirli bir değişkenin değerini görüntüleyebilir miyim? Denedim console.log(url), ama çıktının nerede olduğunu bulamıyorum.
QuarK

24

cmd ⌘+ Dgarip bir şekilde benim için çalışmadı. İOS simülatöründe ctrl+ cmd ⌘+ düğmesine basmak Zbenim için hata ayıklama tarayıcı penceresini başlattı.

Açılan ekran budur:

Yerel Hata Ayıklama Seçenekleri

Daha fazla ayrıntı burada.


Bu seçenekleri görmüyorum ... :(
Noah

16

Debian 8'de (Jessie) reaktif yerel 0.40.0 hata ayıklama , uygulamanız android simülatöründe çalışırken Chromium veya Firebug'daki http: // localhost: 8081 / debugger- ui'ye giderek yapılabilir . Uygulama içi geliştirici menüsüne erişmek için, burada belirtildiği gibi başka bir terminal penceresinde aşağıdaki komutu çalıştırın :

adb shell input keyevent 82


14

Önceki cevaplar hakkında yorum yapmak için yeterli itibarım yok ki bu harika. :) İşte tepki yerli uygulama geliştirirken hata ayıklama bazı yolları.

  1. Canlı yeniden yükleme

    tepki-yerel changes + R tuşları ile değişikliklerinizi görmek için süper kolaylaştırır, hatta sadece canlı yeniden yükleme etkinleştirmek ve bekçi simülatörü son değişikliklerle "yenileyecek". Bir hata alırsanız, o kırmızı ekrandan satır numarasından bir ipucu alabilirsiniz. Bir çift geri alma işlemi sizi tekrar çalışma durumuna döndürür ve yeniden başlar.

  2. console.log('yeah, seriously.')

    Kendimi programın çalışmasına izin vermeyi ve bir debuggerkırılma noktası eklemek yerine bazı bilgileri günlüğe kaydetmeyi tercih ediyorum . (zor hata ayıklayıcı, harici paketler / kütüphanelerle çalışmaya çalışırken yararlıdır ve otomatik tamamlama ile birlikte gelir, böylece başka hangi yöntemleri kullanabileceğinizi bilirsiniz.)

  3. Enable Chrome Debuggingdebugger;programınızda kırılma noktası ile .

Peki, karşılaştığınız hataların türüne ve hata ayıklama tercihlerinize bağlıdır. Çoğu için undefined is not an object (evaluating 'something.something'), yöntem 1 ve 2 benim için yeterince iyi olacaktır.

Dış kütüphaneler veya diğer geliştiriciler tarafından yazılan paketlerle uğraşmak, hata ayıklamak için daha fazla çaba gerektirecektir. Chrome Debugging

Bazen tepki-yerel platformun kendisinden geliyor, bu nedenle tepki-yerel konular için googling kesinlikle yardımcı olacaktır.

umarım bu birisine yardım eder.


12

Bunun yerine, Windows'ta Cmd+MAndroid Emulator Press için F10. Emülatör tüm yerel tepki ayıklama seçeneklerini göstermeye başlar.

görüntü


10
adb logcat *:S ReactNative:V ReactNativeJS:V

android günlük için terminalde çalıştırın.


osx: adb logcat '*: S' ReactNative: V ReactNativeJS: V
mbunch

9

Microsoft Visual Code kullanıyorsanız, React Native Tools uzantısını yükleyin. Daha sonra sadece istenen satır numarasını tıklayarak kesme noktaları ekleyebilirsiniz. Uygulamayı kurmak ve hatalarını ayıklamak için şu adımları izleyin: KURMAK ÇALIŞTIRMAK

Kullanıyorsanız, Hata ayıklama JS'yi öykünücüde etkinleştirmeyi unutmayın.


9

Android için: Menüyü görüntülemek için Ctrl + M (emülatör) veya telefonu sallayın (Cihazda).

İOS için: Cmd + D veya menüyü görüntülemek için Telefonu sallayın

Kromunuz olduğundan emin olun.

Görünen menüde JS'de Uzaktan Hata Ayıkla Seçeneği'ni seçin.

Chrome localhost'ta otomatik olarak açılacak: 8081 / debugger-ui. Bu bağlantı ile manuel olarak hata ayıklayıcıya da gidebilirsiniz.

Orada konsol ortaya ve kaydedilen günlükleri görebilirsiniz.


8

Bana göre React-Native üzerinde hata ayıklamanın en iyi yolu "Reactotron" kullanmaktır .

Reactotron'u kurun ve bunları paketinize ekleyin. Json:

"reactotron-apisauce": "^1.1.2",
"reactotron-react-native-under-37": "^1.1.2",
"reactotron-redux": "^1.1.2", 

şimdi, sadece kodunuzda oturum açma meselesi. Örneğin:console.tron.log('debug')


8
  1. Uygulamanızı simülatörde çalıştırın - tepki yerel çalıştırma-ios
  2. Ctrl + d tuşlarına basın ve JS'da Uzaktan Hata Ayıkla'ya tıklayın

resim açıklamasını buraya girin

  1. web sayfası http: // localhost: 8081 / debugger-ui adresinde açılmalıdır , URL değilse ve Chrome'da bu bağlantıya gidin
  2. Sayfayı sağ tıklayın ve İncele'yi tıklayın; krom için geliştirici araçlarını açmalıdır

resim açıklamasını buraya girin

  1. Üst menüdeki kaynaklara gidin ve sağ taraftaki dosya gezginde js sınıfı dosyanızı bulun

  2. Görünüme kesme noktaları koyabilir ve görüntüde gördüğünüz gibi koddaki hataları ayıklayabilirsiniz.


6

Varsayılan olarak, ios simülatörüm tuş vuruşlarını almıyordu, bu yüzden cmd-D işe yaramadı. Simülatörün menüsünü kullanarak klavye ayarlarını açmak zorunda kaldım:

Donanım> Klavye> Klavye Bağlama

Şimdi cmd-D krom hata ayıklamasını başlattı.



5

Dosya yolundaki bir boşluk olması önlerCmd + Dçalışmasını. Projemi alanı olmayan bir yere taşıdım ve sonunda Chrome hata ayıklayıcısını çalıştırdım. Bir böcek gibi görünüyor .


5

Hata ayıklamayı varsayılan olarak etkinleştirmek istiyorsanız:

import { NativeModules } from 'react-native';

if (__DEV__) {
  NativeModules.DevSettings.setIsDebuggingRemotely(true)
}

Bunun Android'de çalışmasını sağlamak için:

npm install --save react-native-devsettings-android
react-native link react-native-devsettings-android

Referans: Varsayılan olarak “JS'de Uzaktan Hata Ayıkla” etkin bir React Native uygulaması başlatın


Belirli bir yerde bu 4 satırı mı koymalıyım? App.js veya index.js'de mi?
Julien Lamarche

@JulienLamarche App.js'ye koy
Olcay Ertaş

Bu cevap olarak kabul edilmelidir .... neden de komutlara inanıyorum .....
Tushar Pandey

4

Çok basit sadece iki komut

For IOS $ react-native log-ios
For Android $ react-native log-android

ben böyle yapıyorum!
Zach Cook

Bu, mağazanızda neler olup bittiğini görmenin harika bir yoludur
Daan

4

Bu menüyü Android emülatöründe göstermek istediğinizi varsayarsak resim açıklamasını buraya girin

  • Ardından, ⌘+mMac'teki Android öykünücüsünde bu geliştirici ayarları iletişim kutusunu açmayı deneyin .

  • Gösterilmezse o zaman gidin AVD > (click the pen to edit your emulator configuration) > advanced settings > check the enable keyboard input box. resim açıklamasını buraya girin

  • Ve sonra tekrar dene ⌘+m.

  • Hala gösterilmiyorsa, çalışan emülatör ayarlarına gidin ve Send keyboard shortcuts tobirleşik giriş / açılır menüde seçeneği seçin Emulator controls (default).

resim açıklamasını buraya girin

  • Ve sonra tekrar dene ⌘+m.

  • Umarım bu yardımcı olur, benim için çalıştı.


4

Redux kullanıyorsanız, React Native Debugger'ı tavsiye ederim. Chrome cihazlarını içerir, ancak Redux cihazlarını ve React cihazlarını da içerir.

Redux Devtools : Bu, eylemlerinizi görüntülemenizi ve bunlar arasında ileri geri adım atmanızı sağlar. Ayrıca redux mağazanızı görüntülemenize izin verir ve önceki eylemi her eylem için güncellenmiş durumla otomatik olarak dağıtma özelliğine sahiptir, böylece bir dizi eylemde ileri geri adım attığınızda bunu görebilirsiniz.

React Devtools : Bu, belirli bir bileşeni, yani tüm sahne parçalarını ve bileşen durumunu incelemenizi sağlar. Bileşen durumunun bir boole olan parçası varsa, geçiş yapmak ve uygulamanız değiştiğinde nasıl tepki vereceğini görmek için tıklamanıza izin verir. Harika özellik.

Chrome Devtools Tüm konsol çıktılarınızı görmenize, kesme noktalarını kullanmanıza, hata ayıklayıcıda duraklatmanıza olanak tanır ; Standart hata ayıklama özellikleri. İşlemlerinizin Redux Devtools'ta listelendiği alanı sağ tıklayıp 'Ağ İncelemesine İzin Ver' seçeneğini belirlerseniz, API çağrılarınızı tatlı olan Chrome Devtools'un ağ sekmesinde inceleyebilirsiniz.

Sonuç olarak, hepsi bir yerde olması harika! Bunlardan birine ihtiyacınız yoksa, açıp kapatabilirsiniz. React Native Debugger'ı edinin ve hayatın tadını çıkarın.


4

Bu, yanıt yerel hata ayıklayıcı uygulamasını kullanmanın alternatif yoludur.

Aşağıdaki bağlantıyı kullanarak uygulama indirebilirsiniz kaynak kodu ile birlikte redux mağaza yönetmek için çok iyi bir uygulama.

tepki-doğal-ayıklayıcı

ve şimdi size yardımcı olmak için aşağıdaki bağlantıyı doğrudan kullanabilirsiniz.

krom geliştirici araçları


3
  1. Emülatör kullanıyorsanız Ctrl+ M& simulator Cmd+ kullanınD

  2. Tıklayın - Uzaktan hata ayıklama js

  3. Google Chrome konsola git



3

React-Native'de hata ayıklama çok daha kolaydır.

  • IOS kullanımında hata ayıklamak için

cmd + d

ctrl + cmd + z (Simülatör için)

  • Android'de hata ayıklamak için

Cihazı dokunarak sallayın (Geliştirici seçeneğinizin etkinleştirildiğinden emin olun)


1
Güzel açıklama.
Narendra Solanki

3

1. Adım: Yeri debuggerDur komut gibi istediğiniz her zamankinden:

  async saveItem(item, selectedValue) {
    debugger
    try {
        await AsyncStorage.setItem(item, selectedValue);
    }
    catch (error) {
        console.error('AsyncStorage error: ' + error.message);
    }
}

Bu kod bloğuna kontrol geldiğinde hata ayıklayıcıyı duraklatacaktır.

Adım 2: Basın Cmd+Düzerindeki iOS emülatörü ve Cmd+Müzerinde Android simülatörü . Gerçek bir cihazınız varsa cihazı dev menüsünü açmak için sallayın, cihazı sallamak istemiyorsanız bu blogu takip edin

3. Adım: Seçin Enable Remote JS Debugging, bu Chrome'u açacaktır

resim açıklamasını buraya girin

4. Adım: SeçinDeveloper Tools.

resim açıklamasını buraya girin

5. Adım: Hata ayıklayıcınız, kodunuzda Sourcesyazdığınız her yerde sekmede duraklatılır debugger. Konsola gidin ve hata ayıklamak istediğiniz tüm parametreleri yazın (kod bloğunda bulunur): resim açıklamasını buraya girin Bir sonraki hata ayıklayıcı noktasına tekrar gitmek için Kaynaklar'a gidin -> Kod yürütmeyi sürdür düğmesine tıklayın (Sağ köşe mavi düğme)

Hata ayıklayıcıyı, komut dosyasını duraklatmak istediğiniz yere yerleştirin.

Hata ayıklamanın tadını çıkarın !!


3

Safari'de "JS'de Uzaktan Hata Ayıkla" özelliğini etkinleştirmek zorunda kalmadan uygulamanızın iOS sürümünde hata ayıklamak için kullanabilirsiniz, aşağıdaki adımları izlemeniz yeterlidir:

1. Enable Develop menu in Safari: Preferences  Advanced  Select "Show Develop menu in menu bar"
2. Select your app's JSContext: Develop → {Your Simulator} → Automatically Show Web Inspector for JS JSContext
3. Safari's Web Inspector should open which has a Console and a Debugger

3

İlk önce ios simülatörünüzde, [command + D] tuşuna basarsanız bu ekranı görebilirsiniz.

resim açıklamasını buraya girin

Ardından JS'de uzaktan hata ayıkla düğmesini tıklayın.

Bunun ardından Native Debugger'ı Yanıtla sayfasını görebilirsiniz.

resim açıklamasını buraya girin

Ve sonra müfettişinizi açın [f12] ve konsol sekmesine gidin ve hata ayıklayın! :)


2

React Native 0.62 Yayınlandı - Resmi çözüm Flipper 🚀

Flipper , yerel olarak hata ayıklama modunu kullanmadan Android ve iOS Mobile hata ayıklama araçlarıdır.

RN 0.62'den beri (Bu bağlantıya bakın ), Flipper varsayılan projeyle başlatılır.

Flipper, hata ayıklama için birkaç eklentiye sahiptir. Eklentileri içerir Layout, Network,Shared preferences

Flipper'ın en büyük yararı da pek çok eklenti değildir, ancak Android / iOS cihaz konsolu hata ayıklamasını da kolayca görebilirsiniz.

Flipper da kilitlenme veya ağ reddetme konusunda sizi uyarır.

resim açıklamasını buraya girin

Düzen eklentisi erişilebilirlik modunu ve hedef modu içerir.

resim açıklamasını buraya girin

Uygulamanızda ham ağ isteğini / yanıtını da görebilirsiniz.


Flipper'ı manuel olarak yüklememiz gerekiyor mu? Yoksa React Native ile bir şekilde mi gönderiliyor? Eğer öyleyse, nasıl açacağız?
Charanor

@Charanor 0.62'ye yükseltirken yerel yanıt yükseltme kılavuzu kullanarak yükledim
MJ Studio
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.