使ってます
[email protected]
[email protected]
[email protected] (64-bit)
macOS Sierra 10.12.5
[email protected]
[email protected]
最近、デバッガーは間違った行で停止し始めましたが、視覚的にのみ、ほとんどの場合、実際のブレークポイントから8〜14行遅れています。
例えば.
*オレンジ色のバーはグーグルクロームのブレークポイントを示します
コンソール出力:
また、ご覧のとおり、一部の線が暗くなっています。つまり、ブラウザからブレークポイントを設定できません。
動作は、WebStorm内部デバッガー内でも同じです。だから私はそれがChromeのせいではないと思います。ソースマッピングが壊れているようです。原因がWebStormなのかMeteorなのかわかりません。この条件下では、デバッグは非常に困難です...
確かに言うのは難しいですが、あなたが経験している問題は、Meteorが誤ったソースマップを生成する原因となるバグに関連しているようです。
これはブラウザの「障害」ではありません。プロジェクト内のソースマップによってコードとそれに配信される位置を表示するだけです。
app.js
ファイルとソースマップ(app.js.map
)は、Meteorビルドプロセスによって生成され、.meteor/local/build/programs/web.browser/app
ディレクトリから提供されます。
.map
ファイルは、元のソースを表示する方法と、生成されたapp.js
ファイルのどのセグメントが元のソースコードのどのセグメントにマップされるかをブラウザに指示する役割を果たします。
ソースマップの技術的側面についての素晴らしい説明が見つかります ここ 。
あなたはあなたのソースマップをオンラインで視覚化し、どのマップを使用しているかを見ることができます このツール (選択してください custom....js
ファイルと.map
ファイルの両方をドラッグアンドドロップします。
ビルドプロセスの一部として、Meteorは babel-compiler
Meteorパッケージを使用します。ある時点で、バグが原因で、babel変換後に無効なマップが生成されました。
バグは現在 GitHubで追跡 であり、Meteorの人々は原因に近づいているようです。
現時点では、迅速で簡単な修正はありません。
次のいずれかを実行できます。
最後のオプションは、git bisect
を介してバグの特定を開始するために @ hwilsonが行った です。
チェックアウトからmeteorツールを実行する方法の詳細については、 Meteor開発者ドキュメント を参照できますが、要点は次のとおりです。
まず、.meteor/versions
と.meteor/packages
を含むコードがソース管理にチェックアウトされていることを確認します。一時的に混乱させる必要があり、バグが修正されたら復元する必要があるためです。
git clone --recursive https://github.com/meteor/meteor.git
を選択したディレクトリに移動します(例:/home/yourname/src/remote
。cd meteor
。git checkout 25a89b5
最後の既知の適切なコミットを取得します。git submodule update --init --recursive
は、チェックアウト後もすべてがまだ金色であることを確認します。./meteor --help
チェックアウトしたバージョンを開始する.meteor/packages
ファイルから削除します。これは、チェックアウトで提供されるものと互換性がない可能性があるためです。/home/yourname/src/remote/meteor/meteor run
を実行します。これにより、チェックアウトされたMeteorバージョンが実行されます。これを機能させるには、meteor reset
(警告:ローカルのmongoデータベースをクリアします)を実行するか、少なくとも.meteor/local
の一部(ソースマップなど)をクリーンアップする必要がありますが、これは不要な場合があります。
これは、近い将来解決されると思われるバグにとってはかなりの労力ですが、将来のソースマップ関連の問題のドキュメントとして使用するために、この情報を部分的に含めることにしました。
確かに言うのは難しいです。大雑把なグーグル検索では、これを見ているのはあなただけではないように見えます。 @MasterAMが述べたように、それはおそらくトランスパイルからのソースマップが原因です。私はあなたがそれについて多くをすることができるとは思わないが、あなたはブラウザとIDEキャッシュをクリアすることを試みることができる、それはいくつかのために働いたように見える。
このシナリオについてはよくわかりませんが、EclipseでJavaをデバッグしているときに、同様の状況に直面しました。これは、ソースコードとデバッグ中のコンパイル済み/インタープリターコードが異なる場合に発生します。
単純なjsコードをデバッグして、chromeのjsデバッガー自体に問題があるかどうかを検証してみてください。それが機能する場合、「デバッグ対応」ではないコード行の説明は、それらがすべて同じ行にあることです(「7」をログに記録するステートメントまで)。これにより、ブラウザの行番号がオフセットされる可能性もあります。
これは考えられる説明の1つです。