アプリがアプリシミュレータで実行されている間に、どのようにしてReact NativeでReactコードをデバッグしますか?
あなたの反応アプリのJavaScriptコードをデバッグするために、以下をしてください:
Command + D
を押すと、Webページが http:// localhost:8081/debugger-ui に開きます。 (現時点ではChromeのみ)またはShake Gesture
を使用してくださいCommand + Option + I
を押すか、View
- > Developer
- > Developer Tools
で開きます。Google Chrome用に React Developer Tools の拡張子をインストールします。これにより、開発者ツールが開いているときにReact
タブを選択すると、ビュー階層をナビゲートすることができます。
Live Reloadをアクティブにするには、次の手順に従います。
Control + Command + Z
を押してください。Enable/Disable Live Reload
、Reload
、およびEnable/Disable Debugging
オプションが表示されます。Androidアプリの場合、Genymotionを使用している場合はCMD + m
を押してメニューを切り替えることができますが、これを行うことでメニューで有効にする必要があるかもしれません。
CMD + m
クロムでデバッグをクリックして有効にしてください。他の答えに加えて。 debugger文を使用して、react-nativeをデバッグできます。
例:
debugger; //breaks execution
これが機能するためには、あなたのChrome開発ツールが開いている必要があります。
cmd ⌘ + D 奇妙なことに私のために働かなかった。押す ctrl + cmd ⌘ + Z iOSのシミュレータで私のためにデバッグブラウザウィンドウをキックオフしました。
これはポップアップ画面です。
このプログラムを試してください: https://github.com/jhen0409/react-native-debugger
windows
、osx
、linux
に作用します。
それはサポートします:react native
とredux
仮想コンポーネントツリーを調べて、アプリに反映されているスタイルを変更することもできます。
Debian 8(Jessie)でreact-native 0.40.0をデバッグするには、アプリがAndroidシミュレータで実行されている間にChromiumまたはFirebugで http:// localhost:8081/debugger-ui に移動します。アプリ内開発者メニューにアクセスするには、 here で指摘されているように、別のターミナルウィンドウで次のコマンドを実行します。
adb Shell input keyevent 82
私はこれまでの素晴らしい答えについてコメントするのに十分な評判を持っていません。 :)ここに私が反応ネイティブアプリを開発するときにデバッグしている方法のいくつかがあります。
ライブリロード
react-nativeを使用すると、⌘+ Rキーまたは ライブリロードを有効にする を使用して変更を簡単に確認でき、watchmanはシミュレータを最新の変更で「更新」します。エラーが発生した場合は、その赤い画面の行番号から手がかりを得ることができます。 2、3回元に戻すと元の作業状態に戻ります。
console.log('yeah, seriously.')
debugger
ブレークポイントを追加するよりも、プログラムを実行させていくつかの情報をログに記録する方が望ましいと思います。 (タフなデバッガは、外部のパッケージやライブラリを扱うときに便利で、自動補完機能がついてくるので、他にどんな方法が利用できるか知っているでしょう。)
Enable Chrome Debugging
withdebugger;
プログラムのブレークポイント。
まあそれはあなたが遭遇したエラーの種類とデバッグの仕方のあなたの好み次第です。ほとんどのundefined is not an object (evaluating 'something.something')
では、方法1と2は私には十分でしょう。
外部のライブラリや他の開発者によって書かれたパッケージを扱うことはデバッグするためにより多くの努力を必要としますが、Chrome Debugging
のような良いツールです。
時にはそれは反応ネイティブのプラットフォーム自体から来ているので、反応ネイティブの問題のためのグーグルは間違いなく助けになるでしょう。
これが誰かに役立つことを願っています。
adb logcat *:S ReactNative:V ReactNativeJS:V
androidログ用にターミナルでこれを実行します。
私にはReact-Nativeでデバッグする最良の方法は "Reactotron" を使うことです。
Reactotronをインストールしてから、これらをpackage.jsonに追加してください。
"reactotron-apisauce": "^1.1.2",
"reactotron-react-native-under-37": "^1.1.2",
"reactotron-redux": "^1.1.2",
今、それはあなたのコードにログインすることだけの問題です。例:console.tron.log('debug')
トップメニューのソースに行き、右側のファイルエクスプローラであなたのjsクラスファイルを見つけてください。
画像に表示されるように、ビューにブレークポイントを設定し、そこでコードをデバッグできます。
の代わりに Cmd+MAndroidエミュレータプレス用 F10 Windowsでは。エミュレータは、すべての反応ネイティブデバッグオプションを表示し始めます。
Androidアプリの場合Ctrl + Mを押してリモートでdebug jsを選択します。url http:// localhost:8081/debugger-ui でクロムで新しいウィンドウが開きます。これで、クロムブラウザでアプリをデバッグできます
ファイルパスにスペースを入れることを防ぐ Cmd+D 仕事から。私は自分のプロジェクトをスペースのない場所に移動し、ようやくChromeデバッガが動作するようになりました。 バグ のように思えます。
デフォルトでは、私のiosシミュレータはキーストロークを拾っていなかったので、cmd-Dは機能しませんでした。私はシミュレータのメニューを使ってキーボードの設定をオンにしなければなりませんでした:
ハードウェア>キーボード>キーボードの接続
Cmd-Dはクロムデバッグを開始します。
Androidの場合:Ctrl + M(エミュレータ)または(デバイス内)電話機を振るとメニューが表示されます。
IOSの場合:Cmd + Dまたは電話を振るとメニューが表示されます
あなたはクロムを持っていることを確認してください。
表示されたメニューで[Debug JS Rem remote Option]を選択します。
Chromeはlocalhost:8081/debugger-uiで自動的に開かれます。このリンクを使って手動でデバッガに移動することもできます。
コンソールが表示され、ログが記録されているのがわかります。
非常に単純な2つのコマンド
For IOS $ react-native log-ios
For Android $ react-native log-Android
このメニューをAndroid emulatorに表示したいとします。
それから、⌘+m
を試して、MacのAndroidエミュレータにこの開発設定ダイアログをポップアップしてください。
表示されない場合はAVD > (click the pen to edit your emulator configuration) > advanced settings > check the enable keyboard input box
に行きます。
その後、⌘+m
を再試行してください。
それでも表示されない場合は、実行中のエミュレータ設定とSend keyboard shortcuts to
コンボボックス/ドロップダウンに行き、Emulator controls (default)
オプションを選択します。
その後、⌘+m
を再試行してください。
これが役に立つことを願っています、それは私のために働いた。
もしあなたがReduxを使っているなら、React Native Debuggerを強くお勧めします。 Chromeのdevtoolsだけでなく、ReduxのdevtoolsとReactのdevtoolsもあります。
Redux Devtools :これにより、あなたは自分の行動を見ることができ、それらを通して前後に進むことができます。それはまたあなたがあなたのreduxストアを見ることを可能にし、各アクションのために自動的に前の状態を更新された状態と比較する機能を持っているので、あなたがあなたが一連のアクションを行ったり来たりするときそれを見ることができます。
React Devtools :これにより、特定のコンポーネント、つまりすべての小道具とコンポーネントの状態を調べることができます。ブール値であるコンポーネントの状態の一部がある場合は、それをクリックして切り替えることができ、アプリケーションが変更されたときにどのように反応するかを確認できます。素晴らしい機能です。
Chrome Devtools コンソール出力をすべて表示したり、ブレークポイントを使用したり、デバッガを一時停止したりできます。標準的なデバッグ機能Redux Devtoolsでアクションが表示されている領域を右クリックして[ネットワーク検査を許可]を選択すると、Chrome Devtoolsの[ネットワーク]タブでAPI呼び出しを検査できます。
結論として、これらすべてを1か所にまとめるのは素晴らしいことです。あなたがそれらのうちの1つを必要としないならば、あなたはそれをオン/オフに切り替えることができます。 React Native Debuggerを入手して人生を楽しんでください。
これは、反応ネイティブデバッガアプリケーションを使用するための代替方法です。
あなたは、以下のリンクを使用してアプリケーションをダウンロードすることができますそれはソースコードと一緒にreduxストアを管理するための非常に良いアプリケーションです。
同様に今ではあなたはあなたを助けるために直接リンクの下に使用するかもしれません日々。
Safariを使用すると、「Debug JS Rem remote」を有効にしなくても、iOSバージョンのアプリをデバッグできます。次の手順に従ってください。
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
Reactotronという非常に良いdebugerという名前もあります。 https://github.com/infinitered/reactotron
データ値を確認するためにデバッグモードに入る必要はなく、多くの選択肢があります。
見てみると本当に便利です。 ;)
ステップ1: スクリプトを停止したい場所にdebugger
を配置します。
async saveItem(item, selectedValue) {
debugger
try {
await AsyncStorage.setItem(item, selectedValue);
}
catch (error) {
console.error('AsyncStorage error: ' + error.message);
}
}
これにより、このコードブロックが制御されたときにデバッガが一時停止します。
ステップ2: Cmd+D
on ios emulator およびCmd+M
on Androidシミュレータ を押します。本物のデバイスを持っている場合は、デバイスをシェイクしたくない場合はdevメニューを開くためにデバイスをシェイクしてください このブログ
ステップ3: Enable Remote JS Debugging
を選択するとChromeが開きます
ステップ4: Developer Tools.
を選択
ステップ5: あなたのコード内のSources
を書いたところはどこでもdebugger
タブであなたのデバッガは一時停止されます。コンソールに行き、デバッグしたい(コードブロック内にある)パラメータを次のように入力します。 次のデバッガポイントに再び移動するには、ソースに移動します - > [スクリプト実行の再開]ボタン(右隅の青いボタン)をクリックします
スクリプトを一時停止したい場所にデバッガを配置します。
デバッグを楽しんでください。
React-Nativeでは、デバッグはずっと簡単です。
cmd + d
ctrl + cmd + z (シミュレータ用)
タッチでデバイスを振る (開発者オプションが有効になっていることを確認してください)
反応するネイティブアプリをデバッグするには、次のアドレスにアクセスしてください。
localhost:8081/debugger-ui あなたのデフォルトブラウザ(chrome)で反応しているネイティブアプリをデバッグするための開発者ツールを開く
実はとても簡単です。 (Macの場合)cmd Dを押すだけで、シミュレータはポップアップメニューを作成します。そこから「Debug JS Rem remote」またはそれに沿った何かをクリックするだけです。特定のパッケージに関連するコードを実行しながらデバッガを実行すると、人に問題が生じることがわかっています。 react-native-mapsとデバッガに問題がありました。しかし、それは修正されました。ほとんどの場合、あなたはうまくいくはずです。
Visual Code Studioを使用して、React Native AndroidおよびiOSアプリをデバッグする最適な方法
ステップ1。
インストールReact Native-フルパック拡張機能
ステップ2。
USBデバッグモードを使用してモバイルデバイスを接続するか、Androidスタジオからエミュレーターを開きます。
ステップ3。
Visual Code Studioの左側のメニューからデバッグオプションをクリックしますAdd configurationをクリックし、React Nativeその後作成launch.json
ステップ4。
長押しで電話機のdevオプションを開くか、電話機を振って有効にしますjsをリモートでデバッグします
ステップ5。
最後のステップで再生ボタンをクリックして、Debug AndroidまたはDebug iosを選択します
詳細については、このリンクを参照してください
https://medium.com/@tunvirrahmantusher/Android-debug-with-vscode-for-react-native-96f54d73462a
React Native App DevelopmentのAtomエディターでNuclideを使用する場合は、開発段階でアプリがデバイス上で実行されているときに小道具や状態の値の変化を観察するのに役立つ「Element Inspector」も使用できます。もっと知りたい - https://nuclide.io/docs/platforms/react-native/#element-inspectorここに画像の説明を入力してください
エミュレータを使用している場合 Ctrl+M &シミュレータ Cmd+D
- デバッグjsをリモートでクリックして下さい
Google Chromeはコンソールに行きます
あなたはbrewからReact Native Debuggerをインストールすることができます。クロムのデバッガよりも使いやすいです。
デフォルトでデバッグを有効にしたい場合
import { NativeModules } from 'react-native';
if (__DEV__) {
NativeModules.DevSettings.setIsDebuggingRemotely(true)
}
これをAndroidで動作させるには:
npm install --save react-native-devsettings-Android
react-native link react-native-devsettings-Android
私はこのライブラリを反応ネイティブプロジェクトのデバッグに使用します。
https://github.com/jhen0409/react-native-debugger 含まれています
またはあなたが使用することができます
For IOS $ react-native log-ios
For Android $ react-native log-Android
WindowsでAndroidエミュレータを使用すると、次の手順を実行できます。
さらに、デバッグプロセスをよりわかりやすくするためにconsole.log()
機能を使用する必要があります。
あなたが2分毎にあなたの本当の電話を振るしたくないならば、あなたはそれのためにカスタムlibも使うことができます
開発モードのときにdevメニューを開くために振る代わりに3本の指で触れるを使えるようにするlibを作成しました。
https://github.com/pie6k/react-native-dev-menu-on-touch
あなたはあなたのアプリを中にラップするだけでよい:
devMenuOnTouchを「react-native-dev-menu-on-touch」からインポートします。 //または: 'react-native-dev-menu-on-touch'から{DevMenuOnTouch}をインポート
class YourRootApp extends Component {
render() {
return (
<DevMenuOnTouch>
<YourApp />
</DevMenuOnTouch>
);
}
}
実際のデバイス上でデバッグしなければならず、同僚があなたの隣に座っているとき、それは本当に役に立ちます。
ラップトップに接続されている実際のデバイスでアプリを実行する場合は、react-native log-ios
またはreact-native log-Android
を使用して端末経由でデバッグできます(シミュレータでも機能します)。
新しいバージョンのreact-nativeでは、react-native log-Android
またはreact-native log-Android
を使用してアプリケーションのログを開発モードで確認できます。
adb logcat *:S ReactNative:V ReactNativeJS:V
で実行logcat
を開きます(下部パネルのボタン)。react-native run-Android
で実行構築後、Android Studioのlogcat
に詳細ログが表示されます。
あなたはデバッグのためにエキスポを使うことができます: https://expo.io/ /
Expoを使うと、Web開発者はiOSとAndroidの両方で機能する真のネイティブアプリケーションを、JavaScriptで1回作成するだけで作成できます。オープンソースで、無料で、React Nativeを使っています。
これは素晴らしいツールであり、React Europe confでこのワークショップを見ることができます。
それは本当に私がやっていることによります。私がUIを変更したり、UIをデバッグしたりしているのであれば、通常はライブおよびホットリロードを有効にして変更を加えてから、即座にフィードバックを得ます。それがもっと技術的なものであるならば、私はアプリの状態を見るためにJSデバッグをオンにします。しかし、リロードは素早いのでネイティブでは反応が早いため、状態が乱雑すぎる場合はコンソールログを使用します。
私が使用するテクニックは、Androidのデバッグ戦略と非常によく似ており、私のすべての.jsファイルにTAGというグローバル変数を含めることです。
const TAG = 'APP_NAME+SCREEN_NAME';
それから必要なところで、私はします:console.log(TAG + 'ACTION');
このようにして、アクションを追跡し、ログステートメントがどこから来たのかを確認することができます。
ネイティブデバッガそれは私の問題の90%を解決するのに役立ちます