--nolazy
を使用すると、ブレークポイントが正しい場所で停止するため、最終的にIntelliJと非同期でデバッグできます。しかし、--nolazy
でドキュメントが見つかりません...
--nolazy
の意味?
誰かに知らせるために、ノードjs(特にリモートデバッグ)をデバッグし、非同期型コーディングを使用する場合、これはノードの性質であるため、-nolazyのフラグを付けてノードを実行します。
node --nolazy --debug-brk sample1.js
これにより、V8エンジンはコードの完全なコンパイルを強制的に実行し、IntelliJおよびWebStormで適切に動作するため、コードにブレークポイントを適切に配置でき、;デバッガ;を使用する必要がありません。 v8が探す文字列...
これが誰かを助けることを願って、確かに私を助けた:)
ショーン。
他の人が言ったように、あなたはv8のコマンドラインオプションを見ることができます
node --v8-options
そこに--lazy
のリストがあります。
--lazy (use lazy compilation)
type: bool default: true
v8はブール値を記述するためにかなり一般的な方法を使用します-フラグの前にno
を付けてfalseに設定し、フラグのみを使用してtrueに設定します。したがって、--nolazy
はlazy
フラグをfalseに設定します。
注:node
は少し異なる規則を使用します-そこで、no-
プレフィックス(ダッシュに注意)を使用してブール値をfalseに設定します。たとえば、--no-deprecation
はnode
フラグです。
参照: https://vscode-docs.readthedocs.io/en/stable/editor/debugging/
パフォーマンス上の理由から、Node.jsは最初のアクセス時にJavaScriptファイル内の関数を遅延解析します。結果として、ブレークポイントは、Node.jsによって表示(解析)されていないソースコード領域では機能しません。
この動作はデバッグには理想的ではないため、VS Codeは--nolazyオプションをNode.jsに自動的に渡します。これにより、解析の遅延が防止され、コードを実行する前にブレークポイントを検証できるようになります(したがって、「ジャンプ」しなくなります)。
--nolazyオプションを使用すると、デバッグターゲットの起動時間が大幅に増加する可能性があるため、-lazyをruntimeArgs属性として渡すことで簡単にオプトアウトできます。