私はTypeScriptで書かれた依存関係を持っています。依存関係には、NPMパッケージ内のソースマップと元のソースが含まれます。コードにブレークポイントを設定してから依存関係に入ると、コンパイルされたJavaScriptではなくTypeScriptに正しく入ります。しかし、TypeScriptコードにブレークポイントを設定してアプリを起動すると、VSCodeによると、VSCodeにNPM依存関係のソースマップを読み込ませるにはどうすればよいですか?
生成されたコードが見つからないため、ブレークポイントが無視されます(ソースマップの問題?)。
をに従属させると、すべてが機能します。
私は、ソースマップが一方向であるため、TypeScriptソースファイルにブレークポイントがある場合、その場所がJavaScriptにあるかどうかわかりません(実際にブレークポイントを設定する必要があります)。ノードデバッガ)。 JavaScriptファイルが開いたら、VSCodeは2つの現在のブレークポイントを一致させることができます。
ので質問は私のTSブレークポイントはファイルに最初のステップにせずに、起動時から動作するようにがどのように私はそれを作ることができ、ありますか?依存関係は多くのファイルであり、ブレークポイントをリセットする際には問題があります。特に、デバッグしている特定の問題がソケット接続のタイムアウトになってしまうので、長すぎます(2秒以上)。
私が欲しいのは、TypeScriptに「デバッガが起動されたときにこれらのJavaScriptファイルを解析し、ソースマップを同期させてブレークポイントが正しく一致するようにする」ことです。
TypeScriptファイルのブレークポイントを使用して依存関係自体を正常にデバッグすることができます(私は依存関係の管理者です)。 NPMモジュールとして読み込まれると、情報の一部が失われているようです。
私はこの混乱は、 ourceコード。 典型的なケースでは、そうではありません。 それを考えると、コードをデバッグしようとすると、コードを実行していることを意味します。 コードを実行すると、TypeScriptソースコードの代わりにJavaScriptコードが実行されていることになります(ソースマップが必要です)。 ソースコードにブレークポイントを配置すると、実行されないため、おそらく動作しません。 (デバッグモードで)実行しているときに、あなたが見ている「ソースコード」がソースマップに接続されているので動作します。 – unional
これは便利ではないと私は同意します、そしておそらくVSCodeは何かをすることができます。 この問題について他のIDEでより良い経験がありますか? – unional
元のソースが約束を使用し、ES5に移行された場合、特にトランスビルドされたソースコードをデバッグすることは絶対に難しいことです。 C/C++でコードを記述したときに、アセンブリ命令のデバッグとほぼ同じ効果があります。ほとんどの言語では、配布されたバイナリはコンパイルされますが、デバッグツールはバイナリとともにソースコードを配布してデバッグが正常に動作するようにしばしば(常に?)サポートしています。これは、C#およびJava、および一部のC/C++ワークフローに当てはまります。私はGoとRustでも同じだと思う? –