0

私はTypeScriptで書かれた依存関係を持っています。依存関係には、NPMパッケージ内のソースマップと元のソースが含まれます。コードにブレークポイントを設定してから依存関係に入ると、コンパイルされたJavaScriptではなくTypeScriptに正しく入ります。しかし、TypeScriptコードにブレークポイントを設定してアプリを起動すると、VSCodeによると、VSCodeにNPM依存関係のソースマップを読み込ませるにはどうすればよいですか?

生成されたコードが見つからないため、ブレークポイントが無視されます(ソースマップの問題?)。

に従属させると、すべてが機能します。

私は、ソースマップが一方向であるため、TypeScriptソースファイルにブレークポイントがある場合、その場所がJavaScriptにあるかどうかわかりません(実際にブレークポイントを設定する必要があります)。ノードデバッガ)。 JavaScriptファイルが開いたら、VSCodeは2つの現在のブレークポイントを一致させることができます。

ので質問は私のTSブレークポイントはファイルに最初のステップにせずに、起動時から動作するようにがどのように私はそれを作ることができ、ありますか?依存関係は多くのファイルであり、ブレークポイントをリセットする際には問題があります。特に、デバッグしている特定の問題がソケット接続のタイムアウトになってしまうので、長すぎます(2秒以上)。

私が欲しいのは、TypeScriptに「デバッガが起動されたときにこれらのJavaScriptファイルを解析し、ソースマップを同期させてブレークポイントが正しく一致するようにする」ことです。

TypeScriptファイルのブレークポイントを使用して依存関係自体を正常にデバッグすることができます(私は依存関係の管理者です)。 NPMモジュールとして読み込まれると、情報の一部が失われているようです。

+0

私はこの混乱は、 ourceコード。 典型的なケースでは、そうではありません。 それを考えると、コードをデバッグしようとすると、コードを実行していることを意味します。 コードを実行すると、TypeScriptソースコードの代わりにJavaScriptコードが実行されていることになります(ソースマップが必要です)。 ソースコードにブレークポイントを配置すると、実行されないため、おそらく動作しません。 (デバッグモードで)実行しているときに、あなたが見ている「ソースコード」がソースマップに接続されているので動作します。 – unional

+0

これは便利ではないと私は同意します、そしておそらくVSCodeは何かをすることができます。 この問題について他のIDEでより良い経験がありますか? – unional

+0

元のソースが約束を使用し、ES5に移行された場合、特にトランスビルドされたソースコードをデバッグすることは絶対に難しいことです。 C/C++でコードを記述したときに、アセンブリ命令のデバッグとほぼ同じ効果があります。ほとんどの言語では、配布されたバイナリはコンパイルされますが、デバッグツールはバイナリとともにソースコードを配布してデバッグが正常に動作するようにしばしば(常に?)サポートしています。これは、C#およびJava、および一部のC/C++ワークフローに当てはまります。私はGoとRustでも同じだと思う? –

答えて

1

これは、launch.jsonファイル内のoutFiles属性のためのものです。ノードモジュール(およびあなた自身のコード)のjavascriptファイルを含むglobパターンに設定します。デバッグアダプタは、ソースファイル参照のファイルを参照するため、TSファイル内のブレークポイントを直ちに解決できます。

例:

"outFiles": [ "${workspaceRoot}/myOutFiles/**/*.js", "${workspaceRoot}/node_modules/**/*.js" ]

あなたがsourcemapsを含めるノードモジュールだけを選択セットを知っているならば、あなたはこのようなパフォーマンスを向上させることができます

"outFiles": [ "${workspaceRoot}/node_modules/{module_a,module_b}/**/*.js" ]

この問題から: https://github.com/Microsoft/vscode-node-debug/issues/82#issuecomment-290642560

+0

これは機能しました。スタックアウトオーバーフロー(ルールごと)に保持されるように、単にリンクアウトするのではなく詳細を含めるように答えを更新してもよろしいですか?特に、launch.jsonに 'outFiles'に' node_modules'を含める方法に関する指示は、将来の読者にとっては価値があります。ほとんどの場合、GitHubの問題からコピー/貼り付けを行います。 :)あなたが編集したときにコメントをここにドロップすると、私は答えを受け入れるでしょう。 –

+1

良い点、完了 –

関連する問題