web-dev-qa-db-ja.com

Node.jsの `--nolazy`フラグはどういう意味ですか?

--nolazyを使用すると、ブレークポイントが正しい場所で停止するため、最終的にIntelliJと非同期でデバッグできます。しかし、--nolazyでドキュメントが見つかりません...

--nolazyの意味?

44
born2net

誰かに知らせるために、ノードjs(特にリモートデバッグ)をデバッグし、非同期型コーディングを使用する場合、これはノードの性質であるため、-nolazyのフラグを付けてノードを実行します。

node --nolazy --debug-brk sample1.js

これにより、V8エンジンはコードの完全なコンパイルを強制的に実行し、IntelliJおよびWebStormで適切に動作するため、コードにブレークポイントを適切に配置でき、;デバッガ;を使用する必要がありません。 v8が探す文字列...

これが誰かを助けることを願って、確かに私を助けた:)

ショーン。

67
born2net

他の人が言ったように、あなたはv8のコマンドラインオプションを見ることができます

node --v8-options

そこに--lazyのリストがあります。

--lazy (use lazy compilation)
      type: bool  default: true

v8はブール値を記述するためにかなり一般的な方法を使用します-フラグの前にnoを付けてfalseに設定し、フラグのみを使用してtrueに設定します。したがって、--nolazylazyフラグをfalseに設定します。

注:nodeは少し異なる規則を使用します-そこで、no-プレフィックス(ダッシュに注意)を使用してブール値をfalseに設定します。たとえば、--no-deprecationnodeフラグです。

9
Aaron Dufour

参照: https://vscode-docs.readthedocs.io/en/stable/editor/debugging/

パフォーマンス上の理由から、Node.jsは最初のアクセス時にJavaScriptファイル内の関数を遅延解析します。結果として、ブレークポイントは、Node.jsによって表示(解析)されていないソースコード領域では機能しません。

この動作はデバッグには理想的ではないため、VS Codeは--nolazyオプションをNode.jsに自動的に渡します。これにより、解析の遅延が防止され、コードを実行する前にブレークポイントを検証できるようになります(したがって、「ジャンプ」しなくなります)。

--nolazyオプションを使用すると、デバッグターゲットの起動時間が大幅に増加する可能性があるため、-lazyをruntimeArgs属性として渡すことで簡単にオプトアウトできます。

7
user3633852