アプリがアプリシミュレーターで実行されているときに、React Nativeを使用してReactコードをデバッグするにはどうすればよいですか?
アプリがアプリシミュレーターで実行されているときに、React Nativeを使用してReactコードをデバッグするにはどうすればよいですか?
回答:
Cmd+M
OS XとAndroidで行われる
反応アプリのJavaScriptコードをデバッグするには、次のようにします。
Command + D
とWebページがhttp:// localhost:8081 / debugger-uiで開きます。(現時点ではChromeのみ)またはShake Gesture
Command + Option + I
てChromeデベロッパーツールを開くか、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
クリックして有効にしますdebug in chrome
がに置き換えられていstart debug remotely
ます。
cmd + m
またはをフォローして、シミュレータのポップアップウィンドウからctrl + m
選択することができstart debug remotely
ます
他の回答に加えて。デバッガステートメントを使用して、反応ネイティブをデバッグできます
例:
debugger; //breaks execution
これが機能するには、Chrome開発ツールが開いている必要があります
WindowsでAndroidデバイスを使用してデバッグする場合は、コマンドプロンプトを開き、次のように入力します(adbが正しく機能していることを確認してください)
adb shell input keyevent 82
次に選択
debug JS Remotely
新しいウィンドウが自動的に開きます。次に、inspect要素を開くか、コンソールのF12キーを押します。
このプログラムを試してください:https : //github.com/jhen0409/react-native-debugger
動作:windows
、osx
およびlinux
。
それはサポートします:react native
そしてredux
また、仮想コンポーネントツリーを検査して、アプリに反映されるスタイルを変更することもできます。
console.log(url)
、出力先が見つかりません。
Debian 8(Jessie)のreact-native 0.40.0のデバッグは、アプリがAndroidシミュレーターで実行されているときに、ChromiumまたはFirebugでhttp:// localhost:8081 / debugger-uiに移動することで実行できます。アプリ内開発者メニューにアクセスするには、ここで指摘したように、別のターミナルウィンドウで次のコマンドを実行します。
adb shell input keyevent 82
私は以前の素晴らしい回答にコメントするのに十分な評判がありません。:)以下は、react-nativeアプリを開発するときにデバッグする方法の一部です。
ライブリロード
react-nativeを使用すると、changes + Rキーを使用して変更を非常に簡単に確認できます。または、ライブリロードを有効にすれば、ウォッチマンはシミュレータを最新の変更で「更新」します。エラーが発生した場合は、その赤い画面の行番号から手掛かりを得ることができます。元に戻す操作をいくつか行うと、作業状態に戻り、最初からやり直します。
console.log('yeah, seriously.')
私は、debugger
ブレークポイントを追加するよりも、プログラムを実行していくつかの情報をログに記録することを好みます。(タフなデバッガーは、外部のパッケージ/ライブラリーを操作するときに便利で、オートコンプリートが付属しているので、他に利用できるメソッドがわかります。)
Enable Chrome Debugging
debugger;
プログラム内のブレークポイント。
まあそれはあなたが発生したエラーの種類とデバッグ方法のあなたの好みに依存します。ほとんどの場合undefined is not an object (evaluating 'something.something')
、方法1と2で十分です。
一方、他の開発者によって作成された外部ライブラリまたはパッケージを処理するには、デバッグに多くの労力が必要になるため、次のような優れたツールです Chrome Debugging
時々それは反応ネイティブのプラットフォーム自体から来ているので、反応ネイティブの問題をグーグルすることは間違いなく助けになります。
これが誰かの役に立つことを願っています。
Androidの場合:Ctrl + M(エミュレーター)またはシェイクして(デバイス内)、メニューを表示します。
iOSの場合:Cmd + Dまたはシェイクザフォンでメニューを表示
クロムがあることを確認してください。
表示されたメニューで、[Debug JS Remotely Option]を選択します。
Chromeはlocalhost:8081 / debugger-uiで自動的に開きます。このリンクを使用して、デバッガーに手動で移動することもできます。
コンソールが表示され、ログが記録されていることがわかります。
私にとって、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クラスファイルを見つけます。
画像に表示されているように、ビューにブレークポイントを設定して、コードをデバッグできます。
Androidアプリの場合、Ctrl + Mを押してリモートでデバッグjsを選択すると、URLがhttp:// localhost:8081 / debugger-uiの Chromeで新しいウィンドウが開きます。これで、Chromeブラウザでアプリをデバッグできます
デフォルトでデバッグを有効にする場合:
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
次に、⌘+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開発ツールが含まれていますが、Redux開発ツールとReact開発ツールも含まれています。
Redux Devtools:これにより、アクションを表示したり、前後に移動したりできます。また、あなたのreduxストアを表示することができ、各アクションの更新された状態と以前の状態を自動的に比較する機能があるため、一連のアクションを前後に進むときにそれを確認できます。
React Devtools:これにより、特定のコンポーネント、つまりすべての小道具とコンポーネントの状態を検査できます。ブール値であるコンポーネントの状態の一部がある場合、それをクリックして切り替えることができ、変化したときのアプリの反応を確認できます。素晴らしい機能。
Chrome Devtoolsすべてのコンソール出力の表示、ブレークポイントの使用、デバッガーでの一時停止を可能にします。など標準のデバッグ機能。Redux Devtoolsでアクションがリストされている領域を右クリックして[Allow Network Inspect]を選択すると、Chrome DevtoolsのネットワークタブでAPI呼び出しを検査できます。
結論として、これらすべてを1か所にまとめることは素晴らしいことです。それらのいずれかが必要ない場合は、オン/オフを切り替えることができます。React Native Debuggerを入手して、人生を楽しんでください。
これは、reactネイティブデバッガーアプリケーションを使用する別の方法です。
以下のリンクを使用してアプリケーションをダウンロードできます。これは、ソースコードとともにreduxストアを管理するための非常に優れたアプリケーションです。
同様に今、あなたはあなたを助けるために以下のリンクを直接使用することができます。
エミュレータを使用している場合はCtrl+ MとシミュレータCmd+D
をクリック-リモートでjsをデバッグ
Google Chromeはコンソールに移動します
Reactotronという非常に優れたデバッガ名もあります。 https://github.com/infinitered/reactotron
一部のデータ値を表示するためにデバッグモードである必要はなく、多くのオプションがあります。
本当に便利な一見をしてください。;)
React-Nativeではデバッグがはるかに簡単です。
cmd + d
ctrl + cmd + z (シミュレータの場合)
タッチでデバイスをシェイクします(開発者向けオプションが有効になっていることを確認してください)
ステップ1:次のdebugger
ように、スクリプトを停止する
場所に配置します。
async saveItem(item, selectedValue) {
debugger
try {
await AsyncStorage.setItem(item, selectedValue);
}
catch (error) {
console.error('AsyncStorage error: ' + error.message);
}
}
これにより、制御がこのコードブロックに到達すると、デバッガーが一時停止します。
ステップ2:
押しCmd+D
のIOSエミュレータとCmd+M
のAndroidのシミュレータ。実際のデバイスがある場合は、デバイスをシェイクして開発メニューを開きます。デバイスをシェイクしたくない場合は、このブログに従ってください
手順3:を
選択するとEnable Remote JS Debugging
、Chromeが開きます
ステップ4:
選択Developer Tools.
ステップ5:
デバッガーは、コード内でSources
記述したタブに一時停止しますdebugger
。コンソールに移動して、デバッグするパラメーター(コードブロックに存在する)
を次のように入力します。次のデバッガーポイントに再び移動するには、[ソース]に移動し、[スクリプト実行の再開]ボタンをクリックします(右隅の青いボタン)。
スクリプトを一時停止する場所にデバッガーを配置します。
デバッグをお楽しみください!!
Safariを使用すると、「リモートでJSをデバッグ」を有効にすることなく、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
フリッパーは、反応ネイティブでデバッグモードを使用せずにAndroid&iOSモバイルのデバッグツールです。
RN 0.62(このリンクを参照)以降、Flipperはデフォルトのプロジェクトで初期化されます。
Flipperにはデバッグ用のプラグインがいくつかあります。プラグインが含まれLayout
、Network
、Shared preferences
Flipperの最大の利点は多くのプラグインではありませんが、Android / iOSデバイスコンソールのデバッグも簡単に確認できます。
フリッパーは、クラッシュまたはネットワーク拒否についても警告します。
レイアウトプラグインには、アクセシビリティモードとターゲットモードが含まれています。
アプリケーションで生のネットワーク要求/応答を確認することもできます。