Node.js`--nolazy`标志是什么意思?

bor*_*net 41 node.js node-debugger

当我使用时--nolazy,我最终可以与IntelliJ异步调试,因为断点停在正确的位置.但我找不到任何关于--nolazy...的文档

什么--nolazy意思?

bor*_*net 64

让任何人都知道,如果您调试节点js(特别是远程调试)并使用您需要的异步类型编码,因为这是节点的本质,您将运行带有-nolazy标志的节点

node --nolazy --debug-brk sample1.js
Run Code Online (Sandbox Code Playgroud)

这将迫使V8引擎完成代码的完整编译,从而与IntelliJ和WebStorm正常工作,这样您就可以在代码中正确放置断点而不必使用;调试器; v8寻找的字符串......

希望这有助于某人,当然可以帮助我:)

肖恩.

  • 请注意,不再支持“debug-brk”标志。而是使用新标志 `inspect-brk` 或 `inspect-brk=9229`,其中 9229 是您希望调试器启动的端口号。 (2认同)

Aar*_*our 9

正如其他人所说,你可以看到v8的命令行选项

node --v8-options
Run Code Online (Sandbox Code Playgroud)

在那里,您可以看到以下列表--lazy:

--lazy (use lazy compilation)
      type: bool  default: true
Run Code Online (Sandbox Code Playgroud)

v8使用一种相当常见的方式来描述布尔值 - 将标志前缀no设置为false,并仅使用标志设置为true.因此--nolazylazy标志设置为false.

注意:node使用稍微不同的约定 - 在那里,您使用no-前缀(注意破折号)将bools设置为false.例如,--no-deprecationnode一面旗帜.


小智 6

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

出于性能原因,Node.js首次访问时会延迟解析JavaScript文件中的函数。结果,断点在Node.js尚未发现(解析)的源代码区域中不起作用。

由于此行为不是调试的理想选择,因此VS Code自动将--nolazy选项传递给Node.js。这样可以防止延迟的分析,并确保可以在运行代码之前验证断点(因此它们不再“跳转”)。

由于--nolazy选项可能会大大增加调试目标的启动时间,因此您可以通过传递--lazy作为runtimeArgs属性来轻松选择退出。