Что означает флаг Node.js `--nolazy`?
Когда я использую --nolazy
Наконец, я могу отлаживать асинхронно с IntelliJ, так как точки останова останавливаются в правильном месте. Но я не могу найти какие-либо документы на --nolazy
...
Что значит --nolazy
имею в виду?
5 ответов
Чтобы кто-нибудь знал, что если вы отлаживаете узел js (особенно удаленную отладку) и используете кодирование асинхронного типа, которое вам необходимо, так как это природа узла, вы будете запускать узел с флагом -nolazy.
node --nolazy --debug-brk sample1.js
это заставит механизм V8 выполнить полную компиляцию кода и, таким образом, правильно работать с IntelliJ и WebStorm, чтобы вы могли правильно устанавливать точки останова в коде и не использовать отладчик; строка, которую ищет v8...
надеюсь, это поможет кому-то, конечно, помог мне:)
Шон.
Как уже говорили другие, вы можете увидеть параметры командной строки для v8 с
node --v8-options
Там вы можете увидеть список --lazy
:
--lazy (use lazy compilation)
type: bool default: true
v8 использует довольно распространенный способ описания логических значений - добавьте флаг к no
установить в false и использовать только флаг, чтобы установить в true. Так --nolazy
устанавливает lazy
флаг ложно.
Замечания: node
использует немного другое соглашение - там вы используете no-
префикс (обратите внимание на тире), чтобы установить bools в false. Например, --no-deprecation
это node
флаг.
Обратитесь к: https://vscode-docs.readthedocs.io/en/stable/editor/debugging/
Из соображений производительности Node.js анализирует функции внутри файлов JavaScript лениво при первом доступе. Как следствие, точки останова не работают в областях исходного кода, которые не были просмотрены (проанализированы) Node.js.
Поскольку это поведение не идеально для отладки, VS Code автоматически передает параметр --nolazy в Node.js. Это предотвращает отложенный анализ и гарантирует, что точки останова могут быть проверены перед выполнением кода (чтобы они больше не "перепрыгивали").
Поскольку параметр --nolazy может значительно увеличить время запуска цели отладки, вы можете легко отказаться, передав --lazy в качестве атрибута runtimeArgs.
Проблема: когда вы хотите установить точки останова в ides для отладки
js
коды вnodejs
, некоторыеbreakpoints
не работает.Причина: при запуске узел лениво разбирает код, это означает, что он не видит полный код. поэтому он не видит всех точек останова.
Решение: использовать
--no-lazy
возможность отключить ленивое поведение узла.
(Ps: я пытался объяснить это легко и может быть не так точно.)
Бежать
node --v8-options
он покажет вам все доступные флаги.
Кстати: ближайший флаг, который я нашел для вас,
--lazy
означает ленивый сборник, который я считаю очевидным по имени
Могу ли я предложить использовать оболочку и писать node --help