Что означает флаг 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

Другие вопросы по тегам