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?
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.
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
.
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.