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

时间:2014-02-03 18:14:08

标签: node.js node-debugger

当我使用--nolazy时,我最终可以与IntelliJ异步调试,因为断点停在正确的位置。但我在--nolazy ...

上找不到任何文档

--nolazy是什么意思?

6 个答案:

答案 0 :(得分:54)

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

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

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

希望这有助于某人,确实帮助了我:)。

肖恩。

答案 1 :(得分:9)

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

node --v8-options

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

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

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

注意:node使用略有不同的约定 - 在那里,您使用no-前缀(请注意破折号)将bools设置为false。例如,--no-deprecationnode标记。

答案 2 :(得分:4)

指的是: https://vscode-docs.readthedocs.io/en/stable/editor/debugging/

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

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

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

答案 3 :(得分:0)

  • 问题::当您要在ide中设置断点以调试js中的nodejs代码时,某些breakpoints不起作用。< / p>

  • 原因::开始时,node会延迟解析代码,这意味着它看不到完整的代码。因此看不到所有的断点。

  • 解决方案::使用--no-lazy选项打开节点的惰性行为。

(Ps:我试图轻松地解释它,但可能不太准确。)

答案 4 :(得分:-1)

运行

node --v8-options

它会显示所有可用的标记。

btw:我找到的最接近的旗帜是

--lazy

表示懒惰编译,我认为这很明显是名称

答案 5 :(得分:-6)

我建议使用shell并编写node --help