web-dev-qa-db-fra.com

Que signifie le drapeau Node.js `--nolazy`?

Lorsque j'utilise --nolazy, Je peux enfin déboguer de manière asynchrone avec IntelliJ, car les points d'arrêt s'arrêtent au bon endroit. Mais je ne trouve aucun document sur --nolazy...

Qu'est-ce que --nolazy signifier?

44
born2net

Pour que quiconque sache, si vous déboguez le nœud js (en particulier le débogage à distance) et utilisez le codage de type asynchrone que vous devez, car c'est la nature du nœud, vous devrez exécuter le nœud avec le drapeau -nolazy

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

cela forcera le moteur V8 à effectuer une compilation complète du code et fonctionnera donc correctement avec IntelliJ et WebStorm afin que vous puissiez correctement placer des points d'arrêt dans le code et ne pas avoir à utiliser le; débogueur; chaîne que v8 recherche ...

j'espère que cela aide quelqu'un, bien sûr m'a aidé :)

Sean.

67
born2net

Comme d'autres l'ont dit, vous pouvez voir les options de ligne de commande pour v8 avec

node --v8-options

Là, vous pouvez voir une liste pour --lazy:

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

v8 utilise une méthode assez courante pour décrire les booléens - préfixez l'indicateur avec no pour définir false, et utilisez uniquement l'indicateur pour définir true. Alors --nolazy définit le drapeau lazy sur false.

Remarque: node utilise une convention légèrement différente - là, vous utilisez le no- préfixe (notez le tiret) pour définir bools sur false. Par exemple, --no-deprecation est un indicateur node.

9
Aaron Dufour

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

Pour des raisons de performances, Node.js analyse les fonctions dans les fichiers JavaScript paresseusement lors du premier accès. Par conséquent, les points d'arrêt ne fonctionnent pas dans les zones de code source qui n'ont pas été vues (analysées) par Node.js.

Étant donné que ce comportement n'est pas idéal pour le débogage, VS Code transmet automatiquement l'option --nolazy à Node.js. Cela empêche l'analyse différée et garantit que les points d'arrêt peuvent être validés avant d'exécuter le code (afin qu'ils ne "sautent" plus).

Étant donné que l'option --nolazy peut augmenter considérablement le temps de démarrage de la cible de débogage, vous pouvez facilement vous désinscrire en passant un --lazy comme attribut runtimeArgs.

7
user3633852