What does the Node.js `--nolazy` flag mean?

浪尽此生 提交于 2021-01-20 15:20:11

问题


When I use --nolazy, I can finally debug asynchronously with IntelliJ, as breakpoints stop at the correct place. But I can't find any docs on --nolazy...

What does --nolazy mean?


回答1:


To let anyone know, if you debug node js (especially remote debug) and use async type coding which you kind of have to as this is the nature of node, you will to run node with the flag of -nolazy

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

this will force V8 engine to do full compile of code and thus work properly with IntelliJ and WebStorm so you can properly place breakpoints in the code and not have to use the ;debugger; string which v8 looks for...

hope this helps someone, sure helped me :)

Sean.




回答2:


As others have said, you can see command line options for v8 with

node --v8-options

There, you can see a listing for --lazy:

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

v8 uses a fairly common way to describe booleans - prefix the flag with no to set to false, and use just the flag to set to true. So --nolazy sets the lazy flag to false.

Note: node uses a slightly different convention - there, you use the no- prefix (note the dash) to set bools to false. For example, --no-deprecation is a node flag.




回答3:


refer to: https://vscode-docs.readthedocs.io/en/stable/editor/debugging/

For performance reasons Node.js parses the functions inside JavaScript files lazily on first access. As a consequence, breakpoints don't work in source code areas that haven't been seen (parsed) by Node.js.

Since this behavior is not ideal for debugging, VS Code passes the --nolazy option to Node.js automatically. This prevents the delayed parsing and ensures that breakpoints can be validated before running the code (so they no longer "jump").

Since the --nolazy option might increase the start-up time of the debug target significantly, you can easily opt out by passing a --lazy as a runtimeArgs attribute.




回答4:


Run

node --v8-options

it will show you all available flags.

btw: closest flag I have found for you is

--lazy

means lazy compilation, which I believe is obvious by name




回答5:


  • Problem: when you want to set breakpoints in ides to debug js codes in nodejs, some breakpoints doesn't work.

  • Reason: On start, node parses the code lazily, it means it doesn't see the full code. so it doesn't see all of the breakpoint.

  • Solution: Use --no-lazy option to turn of the node's lazy behavior.

( Ps: i tried to explain it easily and it may not be so accurate. )



来源:https://stackoverflow.com/questions/21534565/what-does-the-node-js-nolazy-flag-mean

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!