React Nativeの「Chromeでデバッグ」機能、したがってChromeのデバッガに大きく依存しています。しかし、私はこのシステムに大きな欠陥があることに気付きました。ES6-style importを使ってインポートしたモジュールは、コードが正常に実行されてもChromeのスコープには表示されません。これにより、これらのインポートステートメントを使用するデバッグコードが非常に困難になります。ChromeでReact Nativeを使用してES6インポートステートメントをデバッグする
import
ステートメントをvar MyModule = require(...)
に置き換えた場合、モジュールはスコープ内に表示されます。
ES6 module import is not defined during debuggerを読んだ後、私は(私のブラウザでhttp://localhost:8081/index.ios.bundle?platform=ios&dev=true
をロードすることによって)ネイティブに反応によって生成transpiledソースコードを見ていたし、問題のモジュールが別の名前でロードされていることに気づい:
var _MyModule = require('MyApp/MyModule.js');
var _MyModule2 = babelHelpers.interopRequireDefault(_MyModule);
と実際にはChromeで_MyModule2
を使用できます。私はいくつかの関連する質問があります:
- ソースマップは素晴らしい技術のようです!なぜ変数名のマッピングもサポートしていないのですか?
import
ステートメントでデバッグする方法は、ChromeでReact Nativeを使用すると簡単にできますか?たとえば、私は値を見るためにマウスの変数をChromeの変数に移動するだけでしたが、これらのインポートではこれ以上使用できません。 (Debugging with chrome with es6は、Chromeで#enable-javascript-harmony
を有効にして、ソースマップをオフにするが、私はこれがうまく機能することはないだろうフローコードとuglificationを与えられたことを示唆している。)
はありがとうございます。
私は、 'this'変数がクロムデバッガとトランスビルドされたコードの間で異なる動作をすることに気付きました。矢印関数を使うと、コードはデバッガでうまく見えますが、時には '_this 'を得ることがあります。コードを実行するとは関数ではありません。これも期待されていますか? –
_MyModuleは使用できません。たとえば、バンドルファイルには次のようなものがあります: 'var _MainContainer = require(565/* ./MainContainer * /); var _MainContainer2 = babelHelpers.interopRequireDefault(_MainContainer);'これはchromeコンソールでは利用できません。 'window'オブジェクトを調べることで何も見つからないようです。 –
私は 'window.something = foo'に何かを割り当てることさえできません。私はしばらくこれについて疑問を抱いていましたが、ただそれを行かせてください。しかし、私はいつもコンソールでテストコードをテストしていたので問題です。 –