Перейти к содержанию

API командной строки

Node.js поставляется с различными опциями CLI. Эти опции предоставляют встроенную отладку, несколько способов выполнения скриптов и другие полезные опции времени выполнения.

Чтобы просмотреть эту документацию в виде страницы руководства в терминале, выполните команду man node.

Синопсис

node [options] [V8 options] [<program-entry-point> | -e "script" | -] [--] [arguments]

node inspect [<program-entry-point> | -e "script" | <host>:<port>] ...

node --v8-options

Выполняется без аргументов для запуска REPL.

Для получения дополнительной информации об node inspect смотрите документацию по debugger.

Точка входа в программу

Точка входа в программу представляет собой строку, подобную спецификатору. Если строка не является абсолютным путем, она преобразуется в относительный путь от текущего рабочего каталога. Этот путь затем разрешается загрузчиком модулей CommonJS. Если соответствующий файл не найден, выдается ошибка.

Если файл найден, его путь будет передан загрузчику модулей ECMAScript при любом из следующих условий:

  • Программа была запущена с флагом командной строки, который заставляет загружать точку входа с помощью загрузчика модулей ECMAScript.
  • Файл имеет расширение .mjs.
  • Файл не имеет расширения .cjs, и ближайший родительский файл package.json содержит поле верхнего уровня "type" со значением "module".

В противном случае файл загружается с помощью загрузчика модулей CommonJS. Более подробную информацию смотрите в разделе Загрузчики модулей.

Предостережение о точке входа загрузчика модулей ECMAScript

При загрузке ECMAScript module loader загружает точку входа программы, команда node будет принимать в качестве входных только файлы с расширениями .js, .mjs или .cjs; и с расширениями .wasm, если включена функция --experimental-wasm-modules.

Опции

Все опции, включая опции V8, позволяют разделять слова как тире (-), так и символами подчеркивания (_). Например, --pending-deprecation эквивалентно --pending_deprecation.

Если опция, принимающая одно значение (например, --max-http-header-size), передается несколько раз, то используется последнее переданное значение. Опции из командной строки имеют приоритет над опциями, переданными через переменную окружения NODE_OPTIONS.

-

Псевдоним для stdin. Аналогично использованию - в других утилитах командной строки, что означает, что сценарий читается из stdin, а остальные опции передаются этому сценарию.

--

Укажите конец опций узла. Передайте остальные аргументы сценарию. Если перед этим не указано имя файла скрипта или сценария eval/print, то в качестве имени файла скрипта используется следующий аргумент.

--abort-on-uncaught-exception

Прерывание вместо выхода приводит к созданию файла ядра для последующего анализа с помощью отладчика (например, lldb, gdb и mdb).

Если этот флаг передан, поведение все еще может быть установлено на отказ от прерывания через process.setUncaughtExceptionCaptureCallback() (и через использование модуля node:domain, который его использует).

--allow-child-process

Стабильность: 1 – Экспериментальная

Экспериментальный

При использовании Permission Model процесс по умолчанию не сможет породить дочерний процесс. При попытке сделать это будет выдаваться сообщение ERR_ACCESS_DENIED, если пользователь явно не передаст флаг --allow-child-process при запуске Node.js.

Пример:

1
2
3
4
5
6
const childProcess = require('node:child_process');
// Попытка обойти разрешение
childProcess.spawn('node', [
    '-e',
    'require("fs").writeFileSync("/new-file", "example")',
]);
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
$ node --experimental-permission --allow-fs-read=* index.js
node:internal/child_process:388
  const err = this._handle.spawn(options);
                           ^
Error: Access to this API has been restricted
    at ChildProcess.spawn (node:internal/child_process:388:28)
    at Object.spawn (node:child_process:723:9)
    at Object.<anonymous> (/home/index.js:3:14)
    at Module._compile (node:internal/modules/cjs/loader:1120:14)
    at Module._extensions..js (node:internal/modules/cjs/loader:1174:10)
    at Module.load (node:internal/modules/cjs/loader:998:32)
    at Module._load (node:internal/modules/cjs/loader:839:12)
    at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:81:12)
    at node:internal/main/run_main_module:17:47 {
  code: 'ERR_ACCESS_DENIED',
  permission: 'ChildProcess'
}

--allow-fs-read

Стабильность: 1 – Экспериментальная

Фича изменяется и не допускается флагом командной строки. Может быть изменена или удалена в последующих версиях.

Этот флаг настраивает разрешения на чтение файловой системы, используя Permission Model.

Валидными аргументами для флага --allow-fs-read являются:

  • * - Разрешить операции FileSystemRead.
  • Пути, разделенные запятой (,) для управления операциями FileSystemRead (чтение).

Примеры можно найти в документации File System Permissions.

Относительные пути пока НЕ поддерживаются флагом CLI.

Модуль инициализатора также должен быть разрешен. Рассмотрим следующий пример:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
$ node --experimental-permission t.js
node:internal/modules/cjs/loader:162
  const result = internalModuleStat(filename);
                 ^

Error: Access to this API has been restricted
    at stat (node:internal/modules/cjs/loader:162:18)
    at Module._findPath (node:internal/modules/cjs/loader:640:16)
    at resolveMainPath (node:internal/modules/run_main:15:25)
    at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:53:24)
    at node:internal/main/run_main_module:23:47 {
  code: 'ERR_ACCESS_DENIED',
  permission: 'FileSystemRead',
  resource: '/Users/rafaelgss/repos/os/node/t.js'
}

Процесс должен иметь доступ к модулю index.js:

1
$ node --experimental-permission --allow-fs-read=/path/to/index.js index.js

--allow-fs-write

Стабильность: 1 – Экспериментальная

Фича изменяется и не допускается флагом командной строки. Может быть изменена или удалена в последующих версиях.

Этот флаг настраивает разрешения на запись в файловую систему, используя Permission Model.

Валидными аргументами для флага --allow-fs-write являются:

  • * - Разрешить операции FileSystemWrite.
  • Пути, разделенные запятой (,) для управления операциями FileSystemWrite (запись).

Примеры можно найти в документации File System Permissions.

Относительные пути НЕ поддерживаются с помощью флага CLI.

--allow-worker

Стабильность: 1 – Экспериментальная

Фича изменяется и не допускается флагом командной строки. Может быть изменена или удалена в последующих версиях.

При использовании Permission Model процесс по умолчанию не сможет создавать рабочие потоки. По соображениям безопасности вызов будет отбрасывать ERR_ACCESS_DENIED, если пользователь явно не передаст флаг --allow-worker в главном процессе Node.js.

Пример:

1
2
3
const { Worker } = require('node:worker_threads');
// Попытка обойти разрешение
new Worker(__filename);
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
$ node --experimental-permission --allow-fs-read=* index.js
node:internal/worker:188
    this[kHandle] = new WorkerImpl(url,
                    ^

Error: Access to this API has been restricted
    at new Worker (node:internal/worker:188:21)
    at Object.<anonymous> (/home/index.js.js:3:1)
    at Module._compile (node:internal/modules/cjs/loader:1120:14)
    at Module._extensions..js (node:internal/modules/cjs/loader:1174:10)
    at Module.load (node:internal/modules/cjs/loader:998:32)
    at Module._load (node:internal/modules/cjs/loader:839:12)
    at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:81:12)
    at node:internal/main/run_main_module:17:47 {
  code: 'ERR_ACCESS_DENIED',
  permission: 'WorkerThreads'
}

--build-snapshot

Стабильность: 1 – Экспериментальная

Фича изменяется и не допускается флагом командной строки. Может быть изменена или удалена в последующих версиях.

Генерирует блоб снапшота при завершении процесса и записывает его на диск, который может быть загружен позже с помощью --snapshot-blob.

При построении снапшота, если --snapshot-blob не указан, сгенерированный блоб будет записан, по умолчанию, в snapshot.blob в текущем рабочем каталоге. В противном случае он будет записан в путь, указанный --snapshot-blob.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
$ echo "globalThis.foo = 'I am from the snapshot'" > snapshot.js

# Run snapshot.js to intialize the application and snapshot the
# state of it into snapshot.blob.
$ node --snapshot-blob snapshot.blob --build-snapshot snapshot.js

$ echo "console.log(globalThis.foo)" > index.js

# Load the generated snapshot and start the application from index.js.
$ node --snapshot-blob snapshot.blob index.js
I am from the snapshot

API v8.startupSnapshot можно использовать для указания точки входа во время создания снапшота, что позволяет избежать необходимости дополнительного скрипта входа во время десериализации:

1
2
3
4
$ echo "require('v8').startupSnapshot.setDeserializeMainFunction(() => console.log('I am from the snapshot'))" > snapshot.js
$ node --snapshot-blob snapshot.blob --build-snapshot snapshot.js
$ node --snapshot-blob snapshot.blob
I am from the snapshot

Для получения дополнительной информации ознакомьтесь с документацией v8.startupSnapshot API.

В настоящее время поддержка моментального снимка во время выполнения является экспериментальной:

  1. Пользовательские модули пока не поддерживаются в снапшоте, поэтому только один единственный файл может быть создан в снапшоте. Однако пользователи могут компоновать свои приложения в один скрипт с помощью выбранного ими компоновщика перед созданием снапшота.
  2. Только часть встроенных модулей работает в моментальном снимке, хотя набор тестов ядра Node.js проверяет, что несколько довольно сложных приложений могут быть созданы в моментальном снимке. В настоящее время добавляется поддержка большего количества модулей. Если при создании моментального снимка возникают какие-либо сбои или ошибки, пожалуйста, отправьте отчет в Node.js issue tracker и сделайте ссылку на него в tracking issue for user-land snapshots.

--completion-bash

Печать исходного скрипта завершения bash для Node.js.

1
2
$ node --completion-bash > node_bash_completion
$ source node_bash_completion

-C condition, --conditions=condition

Стабильность: 1 – Экспериментальная

Фича изменяется и не допускается флагом командной строки. Может быть изменена или удалена в последующих версиях.

Включает экспериментальную поддержку пользовательских условий разрешения условного экспорта.

Допускается любое количество имен пользовательских строковых условий.

Условия Node.js по умолчанию "node", "default", "import" и "require" всегда будут применяться так, как определено.

Например, для запуска модуля с разрешением "development":

1
$ node -C development app.js

--cpu-prof

Стабильность: 1 – Экспериментальная

Фича изменяется и не допускается флагом командной строки. Может быть изменена или удалена в последующих версиях.

Запускает профилировщик процессора V8 при старте и записывает профиль процессора на диск перед выходом.

Если --cpu-prof-dir не указан, сгенерированный профиль помещается в текущий рабочий каталог.

Если --cpu-prof-name не указано, созданный профиль будет назван CPU.${yyyymmdd}.${hhmmss}.${pid}.${tid}.${seq}.cpuprofile.

1
2
3
$ node --cpu-prof index.js
$ ls *.cpupuprofile
CPU.20190409.202950.15293.0.0.cpuprofile

--cpu-prof-dir

Стабильность: 1 – Экспериментальная

Фича изменяется и не допускается флагом командной строки. Может быть изменена или удалена в последующих версиях.

Укажите каталог, в который будут помещаться профили процессора, создаваемые --cpu-prof.

Значение по умолчанию контролируется опцией командной строки --diagnostic-dir.

--cpu-prof-interval

Стабильность: 1 – Экспериментальная

Фича изменяется и не допускается флагом командной строки. Может быть изменена или удалена в последующих версиях.

Укажите интервал выборки в микросекундах для профилей ЦП, создаваемых --cpu-prof. По умолчанию это 1000 микросекунд.

--cpu-prof-name

Стабильность: 1 – Экспериментальная

Фича изменяется и не допускается флагом командной строки. Может быть изменена или удалена в последующих версиях.

Укажите имя файла профиля процессора, создаваемого --cpu-prof.

--diagnostic-dir=directory

Устанавливает каталог, в который записываются все выходные файлы диагностики. По умолчанию это текущий рабочий каталог.

Влияет на каталог вывода по умолчанию:

--disable-proto=mode

Отключает свойство Object.prototype.__proto__. Если mode равно delete, свойство удаляется полностью. Если mode равно throw, доступ к свойству вызывает исключение с кодом ERR_PROTO_ACCESS.

--disallow-code-generation-from-strings

Заставьте встроенные функции языка, такие как eval и new Function, которые генерируют код из строк, выбрасывать исключение. Это не влияет на модуль Node.js node:vm.

--dns-result-order=order

Установите значение по умолчанию verbatim в dns.lookup() и dnsPromises.lookup(). Значение может быть следующим:

  • ipv4first: устанавливает по умолчанию verbatim false.
  • verbatim: устанавливает значение по умолчанию verbatim true.

По умолчанию verbatim и dns.setDefaultResultOrder() имеют более высокий приоритет, чем --dns-result-order.

--enable-fips

Включить FIPS-совместимое криптографическое обеспечение при запуске. (Требуется, чтобы Node.js был собран на основе FIPS-совместимого OpenSSL).

--enable-network-family-autoselection

Включает алгоритм автовыбора семейства, если опции подключения явно не отключают его.

--enable-source-maps

Включите поддержку Source Map v3 для трассировки стека.

При использовании транспилятора, такого как TypeScript, трассировки стека, создаваемые приложением, ссылаются на транспилированный код, а не на исходную позицию. --enable-source-maps включает кэширование Карт Источников и делает все возможное, чтобы отслеживание стека происходило относительно исходного файла.

Переопределение Error.prepareStackTrace не позволяет --enable-source-maps изменять трассировку стека.

Обратите внимание, что включение карт источников может внести задержку в ваше приложение при обращении к Error.stack. Если вы часто обращаетесь к Error.stack в своем приложении, примите во внимание последствия --enable-source-maps для производительности.

--experimental-import-meta-resolve

Включите экспериментальную поддержку import.meta.resolve().

--experimental-loader=module

Укажите модуль пользовательского экспериментального ECMAScript module loader. module может быть любой строкой, принятой в качестве спецификатора импорта.

--experimental-network-imports

Стабильность: 1 – Экспериментальная

Фича изменяется и не допускается флагом командной строки. Может быть изменена или удалена в последующих версиях.

Включить экспериментальную поддержку протокола https: в спецификаторах импорта.

--experimental-permission

Включите модель разрешений для текущего процесса. Когда включено, следующие разрешения ограничены:

  • Файловая система - управляется через флаги [--allow-fs-read][],[allow-fs-write][].
  • Детский процесс - управляется с помощью флага [--allow-child-process][].
  • Рабочие потоки - управляются с помощью флага [--allow-worker][].

--experimental-policy

Используйте указанный файл в качестве политики безопасности.

no-experimental-fetch

Отключить экспериментальную поддержку Fetch API.

--no-experimental-global-webcrypto

Запретить экспликацию Web Crypto API в глобальном масштабе.

--no-experimental-global-customevent

Отключает экспликацию CustomEvent Web API в глобальном масштабе.

--no-experimental-repl-await

Используйте этот флаг, чтобы отключить верхнеуровневый await в REPL.

--experimental-shadow-realm

Используйте этот флаг, чтобы включить поддержку ShadowRealm.

--experimental-test-coverage

При использовании в сочетании с модулем node:test, отчет о покрытии кода генерируется как часть вывода программы запуска тестов. Если тесты не выполняются, отчет о покрытии не генерируется. Подробнее см. документацию по сбору покрытия кода тестами.

--experimental-vm-modules

Включите поддержку экспериментальных ES-модулей в модуле node:vm.

--experimental-wasi-unstable-preview1

Включите экспериментальную поддержку WebAssembly System Interface (WASI).

--experimental-wasm-modules.

Включите экспериментальную поддержку модулей WebAssembly.

--force-context-aware

Отключает загрузку нативных аддонов, которые не являются контекстно-зависимыми.

--force-fips

Принудительное использование FIPS-совместимого криптографического кода при запуске. (Не может быть отключено из кода сценария.) (Те же требования, что и --enable-fips).

--frozen-intrinsics

Стабильность: 1 – Экспериментальная

Фича изменяется и не допускается флагом командной строки. Может быть изменена или удалена в последующих версиях.

Включает экспериментальные замороженные интринсики, такие как Array и Object.

Поддерживается только корневой контекст. Нет гарантии, что globalThis.Array действительно является внутренней ссылкой по умолчанию. Код под этим флагом может сломаться.

Для обеспечения возможности добавления полифиллов, --require и --import запускаются перед замораживанием intrinsics.

--force-node-api-uncaught-exceptions-policy

Принудительное включение события uncaughtException для асинхронных обратных вызовов Node-API.

Чтобы предотвратить аварийное завершение процесса существующим дополнением, этот флаг не включен по умолчанию. В будущем этот флаг будет включен по умолчанию для обеспечения правильного поведения.

--heapsnapshot-near-heap-limit=max_count

Стабильность: 1 – Экспериментальная

Фича изменяется и не допускается флагом командной строки. Может быть изменена или удалена в последующих версиях.

Записывает снимок кучи V8 на диск, когда использование кучи V8 приближается к пределу кучи. count должно быть неотрицательным целым числом (в этом случае Node.js запишет на диск не более max_count снимков).

При создании моментальных снимков может быть запущена сборка мусора, которая снизит использование кучи. Поэтому на диск может быть записано несколько снимков, прежде чем экземпляр Node.js окончательно исчерпает память. Эти снимки кучи можно сравнить, чтобы определить, какие объекты выделяются в течение времени, когда делаются последовательные снимки. Не гарантируется, что Node.js запишет на диск именно max_count снимков, но он будет стараться изо всех сил сгенерировать как минимум один и до max_count снимков до того, как экземпляр Node.js исчерпает память, если max_count больше 0.

Генерация снимков V8 требует времени и памяти (как памяти, управляемой кучей V8, так и собственной памяти вне кучи V8). Чем больше куча, тем больше ресурсов ей требуется. Node.js будет корректировать кучу V8, чтобы учесть дополнительные накладные расходы памяти кучи V8, и постарается сделать все возможное, чтобы не использовать всю память, доступную процессу. Когда процесс использует больше памяти, чем система считает нужным, процесс может быть внезапно завершен системой, в зависимости от конфигурации системы.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
$ node --max-old-space-size=100 --heapsnapshot-near-heap-limit=3 index.js
Wrote snapshot to Heap.20200430.100036.49580.0.001.heapsnapshot
Wrote snapshot to Heap.20200430.100037.49580.0.002.heapsnapshot
Wrote snapshot to Heap.20200430.100038.49580.0.003.heapsnapshot

<--- Last few GCs --->

[49580:0x110000000]     4826 ms: Mark-sweep 130.6 (147.8) -> 130.5 (147.8) MB, 27.4 / 0.0 ms  (average mu = 0.126, current mu = 0.034) allocation failure scavenge might not succeed
[49580:0x110000000]     4845 ms: Mark-sweep 130.6 (147.8) -> 130.6 (147.8) MB, 18.8 / 0.0 ms  (average mu = 0.088, current mu = 0.031) allocation failure scavenge might not succeed


<--- JS stacktrace --->

FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory
....

--heapsnapshot-signal=signal

Включает обработчик сигнала, который заставляет процесс Node.js записывать дамп кучи при получении указанного сигнала. signal должно быть правильным именем сигнала. По умолчанию отключен.

1
2
3
4
5
6
7
$ node --heapsnapshot-signal=SIGUSR2 index.js &
$ ps aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
node         1  5.5  6.1 787252 247004 ?       Ssl  16:43   0:02 node --heapsnapshot-signal=SIGUSR2 index.js
$ kill -USR2 1
$ ls
Heap.20190718.133405.15554.0.001.heapsnapshot

--heap-prof

Стабильность: 1 – Экспериментальная

Фича изменяется и не допускается флагом командной строки. Может быть изменена или удалена в последующих версиях.

Запускает профилировщик кучи V8 при старте и записывает профиль кучи на диск перед выходом.

Если --heap-prof-dir не указан, сгенерированный профиль помещается в текущий рабочий каталог.

Если --heap-prof-name не указано, сгенерированный профиль будет назван Heap.${yyyymmdd}.${hhmmss}.${pid}.${tid}.${seq}.heapprofile.

1
2
3
$ node --heap-prof index.js
$ ls *.heapprofile
Heap.20190409.202950.15293.0.001.heapprofile

--heap-prof-dir

Стабильность: 1 – Экспериментальная

Фича изменяется и не допускается флагом командной строки. Может быть изменена или удалена в последующих версиях.

Укажите каталог, в который будут помещаться профили кучи, создаваемые --heap-prof.

Значение по умолчанию контролируется опцией командной строки --diagnostic-dir.

--heap-prof-interval

Стабильность: 1 – Экспериментальная

Фича изменяется и не допускается флагом командной строки. Может быть изменена или удалена в последующих версиях.

Укажите средний интервал выборки в байтах для профилей кучи, генерируемых --heap-prof. По умолчанию 512* 1024 байта.

--heap-prof-name

Стабильность: 1 – Экспериментальная

Фича изменяется и не допускается флагом командной строки. Может быть изменена или удалена в последующих версиях.

Укажите имя файла профиля кучи, создаваемого --heap-prof.

--icu-data-dir=file

Укажите путь загрузки данных ICU. (Переопределяет NODE_ICU_DATA).

--import=module

Стабильность: 1 – Экспериментальная

Фича изменяется и не допускается флагом командной строки. Может быть изменена или удалена в последующих версиях.

Предварительная загрузка указанного модуля при запуске.

Следует правилам разрешения ECMAScript-модулей. Используйте --require для загрузки модуля CommonJS. Модули, предварительно загруженные с помощью --require, будут запускаться раньше модулей, предварительно загруженных с помощью --import.

--input-type=type

Это настраивает Node.js на интерпретацию ввода строк как CommonJS или как модуль ES. Строковый ввод осуществляется через --eval, --print или --STDIN.

Допустимыми значениями являются "commonjs" и "module". По умолчанию используется "commonjs".

REPL не поддерживает эту опцию.

--inspect-brk[=[host:]port]

Активирует инспектор на хост:порт и прерывает его при запуске пользовательского скрипта. По умолчанию хост:порт - 127.0.0.1:9229.

inspect-port=[host:]port

Устанавливает хост:порт, который будет использоваться при активации инспектора. Полезно при активации инспектора путем отправки сигнала SIGUSR1.

Хост по умолчанию - 127.0.0.1.

Смотрите предупреждение безопасности ниже относительно использования параметра host.

--inspect[=[host:]port]

Активировать инспектора на хост:порт. По умолчанию это 127.0.0.1:9229.

Интеграция инспектора V8 позволяет таким инструментам, как Chrome DevTools и IDE, отлаживать и профилировать экземпляры Node.js. Инструменты подключаются к экземплярам Node.js через порт tcp и взаимодействуют с помощью протокола Chrome DevTools Protocol.

Предупреждение: привязка инспектора к общедоступной комбинации IP:порт небезопасна

Привязка инспектора к общедоступному IP (включая 0.0.0.0) с открытым портом небезопасна, так как позволяет внешним хостам подключиться к инспектору и выполнить атаку удаленное выполнение кода.

При указании хоста убедитесь, что либо:

  • Хост недоступен из публичных сетей.
  • Брандмауэр запрещает нежелательные соединения на этом порту.

Более конкретно, --inspect=0.0.0.0 является небезопасным, если порт (9229 по умолчанию) не защищен брандмауэром..

Дополнительную информацию см. в разделе Отладка последствий для безопасности.

--inspect-publish-uid=stderr,http

Укажите способы отображения url веб-сокета инспектора.

По умолчанию url веб-сокета инспектора доступен в stderr и в конечной точке /json/list на http://host:port/json/list.

--insecure-http-parser

Используйте небезопасный парсер HTTP, который принимает недопустимые HTTP-заголовки. Это может обеспечить совместимость с несоответствующими реализациями HTTP. Это также может позволить контрабанду запросов и другие атаки HTTP, которые основаны на принятии недопустимых заголовков. Избегайте использования этой опции.

--jitless

Отключить выделение исполняемой памяти во время выполнения. Это может потребоваться на некоторых платформах по соображениям безопасности. Это также может уменьшить площадь атаки на других платформах, но влияние на производительность может быть серьезным.

Этот флаг унаследован от V8 и может быть изменен в предыдущих версиях. Он может исчезнуть в выпуске, не являющемся основным.

--max-http-header-size=size

Укажите максимальный размер HTTP-заголовков в байтах. По умолчанию 16 килобайт.

--napi-modules

Эта опция не имеет значения. Она сохраняется для совместимости.

no-addons

Отключает условие экспорта node-addons, а также запрещает загрузку нативных аддонов. Когда указано --no-addons, вызов process.dlopen или требование нативного C++ аддона будет неудачным и вызовет исключение.

--no-deprecation

Заглушить предупреждения об износе.

--no-extra-info-on-fatal-exception

Скрыть дополнительную информацию о фатальном исключении, которое вызывает выход.

--no-force-async-hooks-checks

Отключает проверки во время выполнения для async_hooks. Они по-прежнему будут включаться динамически, когда async_hooks включен.

--no-global-search-paths

Не искать модули в глобальных путях, таких как $HOME/.node_modules и $NODE_PATH.

--no-warnings

Заглушить все предупреждения процесса (включая предупреждения об обесценивании).

--node-memory-debug

Включите дополнительные отладочные проверки на утечки памяти во внутренних компонентах Node.js. Обычно это полезно только для разработчиков, отлаживающих сам Node.js.

--openssl-config=file

Загрузка конфигурационного файла OpenSSL при запуске. Среди прочих применений, это может быть использовано для включения FIPS-совместимого крипто, если Node.js собран на основе OpenSSL с поддержкой FIPS.

--openssl-shared-config

Разрешить считывание раздела конфигурации OpenSSL по умолчанию, openssl_conf, из файла конфигурации OpenSSL. По умолчанию конфигурационный файл называется openssl.cnf, но его можно изменить с помощью переменной окружения OPENSSL_CONF или с помощью опции командной строки --openssl-config. Расположение конфигурационного файла OpenSSL по умолчанию зависит от того, как OpenSSL связан с Node.js. Совместное использование конфигурации OpenSSL может привести к нежелательным последствиям, поэтому рекомендуется использовать раздел конфигурации, специфичный для Node.js, который называется nodejs_conf и используется по умолчанию, когда эта опция не используется.

--openssl-legacy-provider

Включить провайдер OpenSSL 3.0 legacy. Для получения дополнительной информации смотрите OSSL_PROVIDER-legacy.

--pending-deprecation

Выдавать предупреждения об отложенных исправлениях.

Отложенные предупреждения об устаревании в целом идентичны предупреждениям об устаревании во время выполнения, за тем исключением, что по умолчанию они отключены и не будут выдаваться, пока не будет установлен флаг командной строки --pending-deprecation или переменная окружения NODE_PENDING_DEPRECATION=1. Отложенная депривация используется для обеспечения своего рода селективного механизма "раннего предупреждения", который разработчики могут использовать для обнаружения использования устаревшего API.

--policy-integrity=sri

Стабильность: 1 – Экспериментальная

Фича изменяется и не допускается флагом командной строки. Может быть изменена или удалена в последующих версиях.

Указывает Node.js на ошибку перед выполнением любого кода, если политика не имеет указанной целостности. В качестве параметра ожидается строка Subresource Integrity.

Указывает загрузчику модулей сохранять символические ссылки при разрешении и кэшировании модулей.

По умолчанию, когда Node.js загружает модуль из пути, который символически связан с другим местоположением на диске, Node.js будет разыменовывать ссылку и использовать фактический "реальный путь" модуля на диске как идентификатор и как корневой путь для нахождения других зависимых модулей. В большинстве случаев такое поведение по умолчанию является приемлемым. Однако при использовании символически связанных одноранговых зависимостей, как показано в примере ниже, поведение по умолчанию вызывает исключение, если модульА пытается потребовать модульВ в качестве одноранговой зависимости:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
{appDir}
 ├── app
 │ ├──── index.js
 │ └──── node_modules
 │ ├──── moduleA -> {appDir}/moduleA
 │ └──── moduleB
 │ ├──── index.js
 │ └──── package.json
 └── модульА
     ├──── index.js
     └── package.json

Флаг командной строки --preserve-symlinks указывает Node.js использовать путь симлинка для модулей вместо реального пути, что позволяет находить символически связанные одноранговые зависимости.

Обратите внимание, однако, что использование --preserve-symlinks может иметь другие побочные эффекты. В частности, символически связанные родные модули могут не загрузиться, если они связаны с более чем одним местом в дереве зависимостей (Node.js будет рассматривать их как два отдельных модуля и попытается загрузить модуль несколько раз, что вызовет исключение).

Флаг --preserve-symlinks не применяется к главному модулю, что позволяет работать команде node --preserve-symlinks node_module/.bin/<foo>. Чтобы применить такое же поведение для главного модуля, также используйте --preserve-symlinks-main.

Указывает загрузчику модулей сохранять символические ссылки при разрешении и кэшировании главного модуля (require.main).

Этот флаг существует для того, чтобы главный модуль мог получить такое же поведение, как --preserve-symlinks для всех остальных импортов; однако это отдельные флаги для обратной совместимости со старыми версиями Node.js.

--preserve-symlinks-main не подразумевает --preserve-symlinks; используйте --preserve-symlinks-main в дополнение к --preserve-symlinks, когда нежелательно следовать симлинкам перед разрешением относительных путей.

Дополнительную информацию смотрите в --preserve-symlinks.

--prof

Сгенерируйте вывод профилировщика V8.

--prof-process

Обработка вывода профилировщика V8, созданного с помощью опции V8 --prof.

--redirect-warnings=file

Запись предупреждений процесса в указанный файл вместо печати в stderr. Файл будет создан, если он не существует, и будет добавлен к нему, если существует. Если при попытке записать предупреждение в файл произойдет ошибка, предупреждение будет записано в stderr.

Имя file может быть абсолютным путем. Если это не так, то каталог по умолчанию, в который он будет записан, контролируется опцией командной строки --diagnostic-dir.

--report-compact

Запись отчетов в компактном формате, однострочном JSON, более удобном для систем обработки журналов, чем многострочный формат по умолчанию, предназначенный для человеческого потребления.

--report-dir=directory, report-directory=directory

Место, в котором будет сгенерирован отчет.

--report-filename=filename

Имя файла, в который будет записан отчет.

Если имя файла имеет значение 'stdout' или 'stderr', отчет будет записан в stdout или stderr процесса соответственно.

--report-on-fatalerror

Позволяет запускать отчет при фатальных ошибках (внутренние ошибки во время выполнения Node.js, такие как нехватка памяти), которые приводят к завершению работы приложения. Полезно для проверки различных элементов диагностических данных, таких как куча, стек, состояние цикла событий, потребление ресурсов и т.д., чтобы определить причину фатальной ошибки.

--report-on-signal

Позволяет генерировать отчет при получении указанного (или предопределенного) сигнала запущенным процессом Node.js. Сигнал для запуска отчета задается через --report-signal.

--report-signal=signal

Устанавливает или сбрасывает сигнал для генерации отчета (не поддерживается в Windows). Сигнал по умолчанию - SIGUSR2.

--report-uncaught-exception

Позволяет генерировать отчет, когда процесс завершается из-за не пойманного исключения. Полезно при проверке стека JavaScript в сочетании с родным стеком и другими данными среды выполнения.

--secure-heap=n

Инициализирует безопасную кучу OpenSSL размером n байт. После инициализации защищенная куча используется для определенных типов выделений в OpenSSL во время генерации ключей и других операций. Это полезно, например, для предотвращения утечки конфиденциальной информации из-за превышения или недовыполнения указателей.

Безопасная куча имеет фиксированный размер и не может быть изменена во время выполнения, поэтому, если она используется, важно выбрать достаточно большую кучу, чтобы покрыть все случаи использования приложения.

Указанный размер кучи должен быть равен двум целым. Любое значение меньше 2 отключит безопасную кучу.

По умолчанию защищенная куча отключена.

Безопасная куча недоступна в Windows.

Более подробную информацию смотрите в CRYPTO_secure_malloc_init.

--secure-heap-min=n

При использовании --secure-heap, флаг --secure-heap-min определяет минимальное выделение из безопасной кучи. Минимальное значение равно 2. Максимальное значение равно меньшему из --secure-heap или 2147483647. Указанное значение должно быть больше двух.

--snapshot-blob=path

Стабильность: 1 – Экспериментальная

Фича изменяется и не допускается флагом командной строки. Может быть изменена или удалена в последующих версиях.

При использовании с --build-snapshot, --snapshot-blob указывает путь, куда будет записан сгенерированный snapshot blob. Если он не указан, сгенерированный блоб будет записан в snapshot.blob в текущем рабочем каталоге.

При использовании без --build-snapshot, --snapshot-blob указывает путь к блобу, который используется для восстановления состояния приложения.

При загрузке моментального снимка Node.js проверяет, что:

  1. Версия, архитектура и платформа запущенного двоичного файла Node.js точно такие же, как и у двоичного файла, создающего моментальный снимок.
  2. Флаги V8 и характеристики процессора совместимы с теми, что используются в двоичном файле, создающем моментальный снимок.

Если они не совпадают, Node.js отказывается загружать снимок и завершает работу с кодом состояния 1.

--test

Запускает программу запуска тестов командной строки Node.js. Этот флаг нельзя комбинировать с --watch-path, --check, --eval, --interactive или инспектором. Подробнее см. документацию по запуску тестов из командной строки.

--test-name-pattern

Регулярное выражение, которое настраивает программу запуска тестов на выполнение только тех тестов, название которых соответствует заданному шаблону. Подробнее см. документацию по фильтрации тестов по имени.

--test-reporter

Тестовый репортер для использования при выполнении тестов. Подробнее см. документацию по тестовым репортерам.

--test-reporter-destination

Пункт назначения для соответствующего тестового репортера. Подробнее см. документацию по тестовым репортерам.

--test-only

Настраивает программу запуска тестов на выполнение только тех тестов верхнего уровня, для которых установлена опция only.

--throw-deprecation

Выбрасывать ошибки, связанные с депривацией.

--title=title

Устанавливает process.title при запуске.

--tls-cipher-list=list

Укажите альтернативный список шифров TLS по умолчанию. Требуется, чтобы Node.js был собран с поддержкой криптографии (по умолчанию).

--tls-keylog=file

Запись материала ключа TLS в файл. Ключевой материал находится в формате NSS SSLKEYLOGFILE и может быть использован программами (например, Wireshark) для расшифровки трафика TLS.

--tls-max-v1.2

Установите tls.DEFAULT_MAX_VERSION на 'TLSv1.2'. Используется для отключения поддержки TLSv1.3.

--tls-max-v1.3

Установите значение по умолчанию tls.DEFAULT_MAX_VERSION на 'TLSv1.3'. Используйте для включения поддержки TLSv1.3.

--tls-min-v1.0

Установить по умолчанию tls.DEFAULT_MIN_VERSION на 'TLSv1'. Используйте для совместимости со старыми клиентами или серверами TLS.

--tls-min-v1.1

Установить по умолчанию tls.DEFAULT_MIN_VERSION на 'TLSv1.1'. Используйте для совместимости со старыми клиентами или серверами TLS.

--tls-min-v1.2

Установите по умолчанию tls.DEFAULT_MIN_VERSION на 'TLSv1.2'. Это значение по умолчанию для 12.x и более поздних версий, но опция поддерживается для совместимости с более старыми версиями Node.js.

--tls-min-v1.3

Установите по умолчанию tls.DEFAULT_MIN_VERSION на 'TLSv1.3'. Используется для отключения поддержки TLSv1.2, который не так безопасен, как TLSv1.3.

--trace-atomics-wait

Стабильность: 0 – устарело или набрало много негативных отзывов

Эта фича является проблемной и ее планируют изменить. Не стоит полагаться на нее. Использование фичи может вызвать ошибки. Не стоит ожидать от нее обратной совместимости.

Выводит краткие сводки вызовов Atomics.wait() на stderr. Вывод может выглядеть следующим образом:

1
2
3
4
5
6
7
8
(node:15701) [Thread 0] Atomics.wait(&lt;address> + 0, 1, inf) started
(node:15701) [Thread 0] Atomics.wait(&lt;address> + 0, 1, inf) did not wait because the values mismatched
(node:15701) [Thread 0] Atomics.wait(&lt;address> + 0, 0, 10) started
(node:15701) [Thread 0] Atomics.wait(&lt;address> + 0, 0, 10) timed out
(node:15701) [Thread 0] Atomics.wait(&lt;address> + 4, 0, inf) started
(node:15701) [Thread 1] Atomics.wait(&lt;address> + 4, -1, inf) started
(node:15701) [Thread 0] Atomics.wait(&lt;address> + 4, 0, inf) was woken up by another thread
(node:15701) [Thread 1] Atomics.wait(&lt;address> + 4, -1, inf) was woken up by another thread

Поля здесь соответствуют:

  • Идентификатор потока, заданный worker_threads.threadId
  • Базовый адрес рассматриваемого SharedArrayBuffer, а также смещение байта, соответствующее индексу, переданному в Atomics.wait().
  • Ожидаемое значение, которое было передано в Atomics.wait().
  • Таймаут, переданный в Atomics.wait.

--trace-deprecation

Печать трассировки стека для исправлений.

--trace-event-categories

Список категорий, которые должны быть отслежены через запятую, когда трассировка событий включена с помощью --trace-events-enabled.

--trace-event-file-pattern

Шаблонная строка, указывающая путь к файлу для данных о событии трассировки, поддерживает ${rotation} и ${pid}.

--trace-events-enabled

Включает сбор информации о событиях трассировки.

--trace-exit

Печатает трассировку стека всякий раз, когда среда выходит активно, т.е. вызывая process.exit().

--trace-sigint

Печатает трассировку стека SIGINT.

--trace-sync-io

Печатает трассировку стека каждый раз, когда обнаруживается синхронный ввод/вывод после первого оборота цикла событий.

--trace-tls

Печатает информацию о трассировке пакетов TLS в stderr. Это можно использовать для отладки проблем с TLS-соединением.

--trace-uncaught

Печать трассировки стека для не пойманных исключений; обычно печатается трассировка стека, связанная с созданием Error, тогда как эта опция заставляет Node.js также печатать трассировку стека, связанную с бросанием значения (которое не обязательно должно быть экземпляром Error).

Включение этой опции может негативно повлиять на поведение сборки мусора.

--trace-warnings

Печать трассировки стека для предупреждений процесса (в т.ч. об обесценивании).

--track-heap-objects

Отслеживание выделения объектов кучи для моментальных снимков кучи.

--unhandled-rejections=mode

Использование этого флага позволяет изменить, что должно произойти при возникновении необработанного отказа. Можно выбрать один из следующих режимов:

  • throw: Выбросить unhandledRejection. Если этот хук не установлен, то необработанный отказ будет поднят как не пойманное исключение. Это значение по умолчанию.
  • strict: Поднимать необработанный отказ как неперехваченное исключение. Если исключение обрабатывается, то выдается unhandledRejection.
  • warn: Всегда вызывает предупреждение, независимо от того, установлен ли хук unhandledRejection или нет, но не выводит предупреждение об износе.
  • warn-with-error-code: Выводить unhandledRejection. Если этот хук не установлен, выдать предупреждение и установить код завершения процесса равным 1.
  • none: Заглушить все предупреждения.

Если отказ произойдет во время фазы статической загрузки ES-модуля точки входа командной строки, он всегда будет подниматься как неперехваченное исключение.

--use-bundled-ca, --use-openssl-ca

Использовать хранилище Mozilla CA, поставляемое текущей версией Node.js, или использовать хранилище OpenSSL CA по умолчанию. Хранилище по умолчанию можно выбрать во время сборки.

Хранилище ЦС из комплекта поставки Node.js - это снимок хранилища ЦС Mozilla, который фиксируется во время выпуска. Он идентичен на всех поддерживаемых платформах.

Использование хранилища OpenSSL позволяет вносить внешние изменения в хранилище. В большинстве дистрибутивов Linux и BSD это хранилище поддерживается сопровождающими дистрибутива и системными администраторами. Расположение хранилища OpenSSL CA зависит от конфигурации библиотеки OpenSSL, но оно может быть изменено во время выполнения с помощью переменных окружения.

См. SSL_CERT_DIR и SSL_CERT_FILE.

--use-largepages=mode

Повторное отображение статического кода Node.js на страницы с большим объемом памяти при запуске. Если это поддерживается целевой системой, то статический код Node.js будет перемещен на 2 MiB страницы вместо 4 KiB страниц.

Для mode допустимы следующие значения:

  • off: Не будет предпринята попытка сопоставления. Это значение по умолчанию.
  • on: Если поддерживается ОС, будет предпринята попытка отображения. В случае неудачи попытка отображения будет проигнорирована, а сообщение будет выведено в стандартную ошибку.
  • silent: Если поддерживается ОС, будет предпринята попытка отображения. Неудачные попытки отображения будут проигнорированы, и сообщение о них не будет выведено.

--v8-options

Печать опций командной строки V8.

--v8-pool-size=num

Задает размер пула потоков V8, который будет использоваться для распределения фоновых заданий.

Если установлено значение 0, то Node.js выберет подходящий размер пула потоков на основе оценки количества параллелизма.

Объем параллелизма относится к количеству вычислений, которые могут выполняться одновременно на данной машине. В общем, это то же самое, что и количество CPU, но оно может отличаться в таких средах, как виртуальные машины или контейнеры.

--watch

Стабильность: 1 – Экспериментальная

Фича изменяется и не допускается флагом командной строки. Может быть изменена или удалена в последующих версиях.

Запускает Node.js в режиме наблюдения. В режиме наблюдения изменения в наблюдаемых файлах приводят к перезапуску процесса Node.js. По умолчанию в режиме просмотра будет просматриваться точка входа и любой требуемый или импортируемый модуль. Используйте --watch-path, чтобы указать пути, за которыми нужно следить.

Этот флаг нельзя комбинировать с --check, --eval, --interactive или REPL.

1
$ node --watch index.js

--watch-path

Стабильность: 1 – Экспериментальная

Фича изменяется и не допускается флагом командной строки. Может быть изменена или удалена в последующих версиях.

Запускает Node.js в режиме наблюдения и указывает, какие пути необходимо наблюдать. В режиме наблюдения изменения в наблюдаемых путях приводят к перезапуску процесса Node.js. Это отключает наблюдение за требуемыми или импортированными модулями, даже если используется в комбинации с --watch.

Этот флаг нельзя использовать совместно с --check, --eval, --interactive, --test или REPL.

1
$ node --watch-path=./src --watch-path=./tests index.js

Эта опция поддерживается только на macOS и Windows. Исключение ERR_FEATURE_UNAVAILABLE_ON_PLATFORM будет выброшено, если опция используется на платформе, которая ее не поддерживает.

--watch-preserve-output

Отключите очистку консоли при перезапуске процесса в режиме watch.

1
$ node --watch --watch-preserve-output test.js

--zero-fill-buffers

Автоматически заполняет нулями все вновь выделенные экземпляры Buffer и SlowBuffer.

-c, --check

Синтаксическая проверка сценария без выполнения.

-e, -eval "script"

Оценить следующий аргумент как JavaScript. Модули, предопределенные в REPL, также могут быть использованы в script.

В Windows при использовании cmd.exe одинарная кавычка будет работать некорректно, так как он распознает только двойную кавычку ``. В Powershell или Git bash можно использовать как', так и'`.

-h, --help

Печать параметров командной строки узла. Вывод этой опции менее подробен, чем этот документ.

-i, -interactive

Открывает REPL, даже если stdin не является терминалом.

-p, --print "script"

Идентично -e, но печатает результат.

-r, --require module

Предварительная загрузка указанного модуля при запуске.

Следуют правилам разрешения модулей require(). module может быть либо путем к файлу, либо именем узлового модуля.

Поддерживаются только модули CommonJS. Используйте --import для предварительной загрузки модуля ECMAScript. Модули, предварительно загруженные с помощью --require, будут запускаться раньше модулей, предварительно загруженных с помощью --import.

-v, --version

Вывести версию узла.

Переменные среды

FORCE_COLOR=[1, 2, 3]

Переменная окружения FORCE_COLOR используется для включения ANSI-колоризации вывода. Значение может быть:

  • 1, true, или пустая строка '' для обозначения поддержки 16 цветов,
  • 2 указывает на поддержку 256 цветов, или
  • 3 для обозначения поддержки 16 миллионов цветов.

Когда FORCE_COLOR используется и устанавливается в поддерживаемое значение, переменные окружения NO_COLOR и NODE_DISABLE_COLORS игнорируются.

Любое другое значение приведет к тому, что цветной вывод будет отключен.

NODE_DEBUG=module[,...]

, - разделенный список модулей ядра, которые должны выводить отладочную информацию.

NODE_DEBUG_NATIVE=module[,...]

, - разделенный список основных модулей C++, которые должны выводить отладочную информацию.

NODE_DISABLE_COLORS=1

Когда установлено, цвета не будут использоваться в REPL.

NODE_EXTRA_CA_CERTS=file

При установке этого параметра хорошо известные "корневые" CA (например, VeriSign) будут расширены дополнительными сертификатами в file. Файл должен состоять из одного или нескольких доверенных сертификатов в формате PEM. Будет выдано сообщение (один раз) с помощью process.emitWarning(), если файл отсутствует или неправильно оформлен, но любые ошибки игнорируются.

Ни известные, ни дополнительные сертификаты не используются, если свойство опций ca явно указано для клиента или сервера TLS или HTTPS.

Эта переменная окружения игнорируется, если node запущен с правами setuid root или установлены файловые возможности Linux.

Переменная окружения NODE_EXTRA_CA_CERTS считывается только при первом запуске процесса Node.js. Изменение значения во время выполнения с помощью process.env.NODE_EXTRA_CA_CERTS не влияет на текущий процесс.

NODE_ICU_DATA=file

Путь к данным для ICU (Intl объект). Расширяет связанные данные при компиляции с поддержкой small-icu.

NODE_NO_WARNINGS=1

Если установлено значение 1, предупреждения процесса глушатся.

NODE_OPTIONS=options...

Список опций командной строки, разделенных пробелами. options... интерпретируются перед опциями командной строки, поэтому опции командной строки будут отменяться или составляться после чего-либо в options.... Node.js завершит работу с ошибкой, если используется опция, недопустимая в окружении, например, -p или файл сценария.

Если значение опции содержит пробел, его можно заключить в двойные кавычки:

1
NODE_OPTIONS='--require "./my path/file.js"'

Флаг одиночки, переданный в качестве опции командной строки, будет переопределять тот же флаг, переданный в NODE_OPTIONS:

1
2
# Инспектор будет доступен на порту 5555
NODE_OPTIONS='--inspect=localhost:4444' node --inspect=localhost:5555

Флаг, который может быть передан несколько раз, будет рассматриваться так, как если бы сначала были переданы его экземпляры NODE_OPTIONS, а затем его экземпляры командной строки:

1
2
3
NODE_OPTIONS='--require "./a.js"' node --require "./b.js"
# эквивалентно:
node --require "./a.js" --require "./b.js"

Опции Node.js, которые разрешены:

  • --allow-child-process
  • --allow-fs-read
  • --allow-fs-write
  • --allow-worker
  • --условия, -C
  • --diagnostic-dir
  • --disable-proto
  • --dns-result-order
  • --enable-fips
  • --enable-network-family-autoselection
  • --enable-source-maps
  • --experimental-abortcontroller
  • --experimental-import-meta-resolve
  • --experimental-json-modules
  • --experimental-loader
  • --experimental-modules
  • --experimental-network-imports
  • --experimental-permission
  • --experimental-policy
  • --experimental-shadow-realm
  • --experimental-specifier-resolution
  • --experimental-top-level-await
  • --experimental-vm-modules
  • --experimental-wasi-unstable-preview1
  • --experimental-wasm-modules
  • --force-context-aware
  • --force-fips
  • --force-node-api-uncaught-exceptions-policy
  • --frozen-intrinsics
  • --heapsnapshot-near-heap-limit
  • --heapsnapshot-signal
  • --http-parser
  • --icu-data-dir
  • --импорт
  • --input-type
  • --insecure-http-parser
  • --inspect-brk
  • --inspect-port, --debug-port
  • --inspect-publish-uid
  • --inspect
  • --max-http-header-size
  • --napi-modules
  • --no-addons
  • --no-deprecation
  • --no-experimental-fetch
  • --no-experimental-global-customevent
  • --no-experimental-global-webcrypto
  • --no-experimental-repl-await
  • --no-extra-info-on-fatal-exception
  • --no-force-async-hooks-checks
  • --no-global-search-paths
  • --no-warnings
  • --node-memory-debug
  • --openssl-config
  • --openssl-legacy-provider
  • --openssl-shared-config
  • --отложенная депривация
  • --политическая целостность
  • --preserve-symlinks-main
  • --preserve-symlinks
  • --prof-process
  • --redirect-warnings
  • --report-compact
  • --report-dir, --report-directory
  • --report-filename
  • --report-on-fatalerror
  • --report-on-signal
  • `--ре

NODE_PATH=path[:...]

':'-разделенный список каталогов с префиксом пути поиска модуля.

В Windows вместо этого используется ';'-разделенный список.

NODE_PENDING_DEPRECATION=1

Если установлено значение 1, будут выдаваться предупреждения об ожидающих исправлениях.

Отложенные исправления в целом идентичны исправлениям во время выполнения, за тем исключением, что по умолчанию они отключены и не будут выдаваться, пока не будет установлен флаг командной строки --pending-deprecation или переменная окружения NODE_PENDING_DEPRECATION=1. Отложенная депривация используется для обеспечения своего рода селективного механизма "раннего предупреждения", который разработчики могут использовать для обнаружения использования устаревшего API.

NODE_PENDING_PIPE_INSTANCES=instances

Устанавливает количество ожидающих обработок экземпляров труб, когда сервер труб ожидает соединений. Этот параметр применяется только для Windows.

NODE_PRESERVE_SYMLINKS=1

Если установлено значение 1, это указывает загрузчику модулей сохранять символические ссылки при разрешении и кэшировании модулей.

NODE_REDIRECT_WARNINGS=file

Если установлено, предупреждения процесса будут выводиться в указанный файл вместо печати на stderr. Файл будет создан, если он не существует, и будет добавлен к нему, если существует. Если при попытке записать предупреждение в файл произойдет ошибка, вместо этого предупреждение будет записано в stderr. Это эквивалентно использованию флага командной строки --redirect-warnings=file.

NODE_REPL_HISTORY=file

Путь к файлу, используемому для хранения постоянной истории REPL. По умолчанию используется путь ~/.node_repl_history, который переопределяется этой переменной. Установка значения в пустую строку ('' или '') отключает постоянную историю REPL.

NODE_REPL_EXTERNAL_MODULE=file

Путь к модулю Node.js, который будет загружен вместо встроенного REPL. Если переопределить это значение на пустую строку (''), будет использоваться встроенный REPL.

NODE_SKIP_PLATFORM_CHECK=value

Если value равно '1, проверка на наличие поддерживаемой платформы пропускается при запуске Node.js. Node.js может выполняться некорректно. Любые проблемы, возникающие на неподдерживаемых платформах, не будут исправлены.

NODE_TEST_CONTEXT=value

Если value равно 'child', опции репортера теста будут отменены, и вывод теста будет отправлен на stdout в формате TAP.

NODE_TLS_REJECT_UNAUTHORIZED=value

Если value равно 0, проверка сертификата отключена для TLS-соединений. Это делает TLS и, соответственно, HTTPS небезопасными. Использование этой переменной окружения настоятельно не рекомендуется.

NODE_V8_COVERAGE=dir

При установке этого значения Node.js начнет выводить данные V8 JavaScript code coverage и Source Map в каталог, указанный в качестве аргумента (информация о покрытии записывается в виде JSON в файлы с префиксом coverage).

NODE_V8_COVERAGE будет автоматически распространяться на подпроцессы, что облегчает проверку приложений, вызывающих семейство функций child_process.spawn(). Для предотвращения распространения NODE_V8_COVERAGE может быть задана пустая строка.

Вывод покрытия

Покрытие выводится в виде массива объектов ScriptCoverage по ключу верхнего уровня result:

1
2
3
4
5
6
7
8
9
{
    "result": [
        {
            "scriptId": "67",
            "url": "internal/tty.js",
            "functions": []
        }
    ]
}

Источник карты кэша

Стабильность: 1 – Экспериментальная

Фича изменяется и не допускается флагом командной строки. Может быть изменена или удалена в последующих версиях.

Если данные карты источников найдены, они добавляются к ключу верхнего уровня source-map-cache объекта JSON покрытия.

source-map-cache - это объект с ключами, представляющими файлы, из которых были извлечены карты источников, и значениями, включающими необработанный URL карты источников (в ключе url), разобранную информацию Source Map v3 (в ключе data) и длину строк исходного файла (в ключе lineLengths).

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
{
    "result": [
        {
            "scriptId": "68",
            "url": "file:///absolute/path/to/source.js",
            "functions": []
        }
    ],
    "source-map-cache": {
        "file:///absolute/path/to/source.js": {
            "url": "./path-to-map.json",
            "data": {
                "version": 3,
                "sources": [
                    "file:///absolute/path/to/original.js"
                ],
                "names": ["Foo", "console", "info"],
                "mappings": "MAAMA,IACJC,YAAaC",
                "sourceRoot": "./"
            },
            "lineLengths": [13, 62, 38, 27]
        }
    }
}

NO_COLOR=<any>

NO_COLOR - это псевдоним для NODE_DISABLE_COLORS. Значение переменной окружения является произвольным.

OPENSSL_CONF=file

Загрузка конфигурационного файла OpenSSL при запуске. Помимо прочего, это может быть использовано для включения FIPS-совместимого крипто, если Node.js собран с ./configure --openssl-fips.

Если используется опция командной строки --openssl-config, переменная окружения игнорируется.

SSL_CERT_DIR=dir

Если включено --use-openssl-ca, эта переменная переопределяет и устанавливает каталог OpenSSL, содержащий доверенные сертификаты.

Имейте в виду, что если дочернее окружение не установлено явно, эта переменная окружения будет унаследована всеми дочерними процессами, и если они используют OpenSSL, это может заставить их доверять тем же CA, что и узел.

SSL_CERT_FILE=file

Если включено --use-openssl-ca, эта переменная отменяет и устанавливает файл OpenSSL, содержащий доверенные сертификаты.

Имейте в виду, что если дочернее окружение не установлено явно, эта переменная окружения будет унаследована всеми дочерними процессами, и если они используют OpenSSL, это может заставить их доверять тем же CA, что и узел.

TZ

Переменная окружения TZ используется для указания конфигурации часового пояса.

Хотя Node.js не поддерживает все различные способы, которыми TZ обрабатывается в других окружениях, он поддерживает основные идентификаторы часовых поясов (такие как 'Etc/UTC', 'Europe/Paris' или 'America/New_York'). Он может поддерживать несколько других сокращений или псевдонимов, но они настоятельно не рекомендуются и не гарантируются.

1
2
$ TZ=Europe/Dublin node -pe "new Date().toString()"
Wed May 12 2021 20:30:48 GMT+0100 (Irish Standard Time)

UV_THREADPOOL_SIZE=size

Установите количество потоков, используемых в пуле потоков libuv, равным size потоков.

Асинхронные системные API используются в Node.js везде, где это возможно, но там, где их нет, пул потоков libuv используется для создания асинхронных API узла на основе синхронных системных API. API Node.js, использующие threadpool, это:

  • все API fs, кроме API file watcher и тех, которые явно синхронны
  • асинхронные криптографические API, такие как crypto.pbkdf2(), crypto.scrypt(), crypto.randomBytes(), crypto.randomFill(), crypto.generateKeyPair()
  • dns.lookup()
  • все zlib API, кроме тех, которые явно синхронны.

Поскольку пул потоков libuv имеет фиксированный размер, это означает, что если по какой-то причине любой из этих API занимает много времени, производительность других (казалось бы, не связанных) API, выполняющихся в пуле потоков libuv, будет снижена. Чтобы смягчить эту проблему, одним из возможных решений является увеличение размера пула потоков libuv путем установки переменной окружения 'UV_THREADPOOL_SIZE' в значение большее, чем 4 (текущее значение по умолчанию). Для получения дополнительной информации см. документацию libuv threadpool documentation.

Полезные опции V8

V8 имеет свой собственный набор опций CLI. Любая опция V8 CLI, которая предоставляется node, будет передана V8 для обработки. Опции V8 не гарантируют стабильности. Сама команда V8 не считает их частью своего официального API и оставляет за собой право изменить их в любое время. Аналогично, на них не распространяются гарантии стабильности Node.js. Многие из опций V8 представляют интерес только для разработчиков V8. Несмотря на это, существует небольшой набор опций V8, которые широко применимы к Node.js, и они документированы здесь:

--max-old-space-size=SIZE (в мегабайтах)

Устанавливает максимальный размер раздела старой памяти в V8. Когда потребление памяти приближается к пределу, V8 будет тратить больше времени на сборку мусора, пытаясь освободить неиспользуемую память.

На машине с 2 гигабайтами памяти можно установить значение 1536 (1,5 гигабайта), чтобы оставить немного памяти для других целей и избежать свопинга.

1
$ node --max-old-space-size=1536 index.js

--max-semi-space-size=SIZE (в мегабайтах)

Устанавливает максимальный размер полупространства для сборщика мусора scavenge в MiB (мегабайтах). Увеличение максимального размера полупространства может улучшить пропускную способность для Node.js ценой большего потребления памяти.

Поскольку размер молодого поколения кучи в V8 в три раза (см. YoungGenerationSizeFromSemiSpaceSize в V8) больше размера полупространства, увеличение размера полупространства на 1 MiB применяется к каждому из трех отдельных полупространств и приводит к увеличению размера кучи на 3 MiB. Улучшение пропускной способности зависит от вашей рабочей нагрузки (см. #42511).

Значение по умолчанию составляет 16 MiB для 64-битных систем и 8 MiB для 32-битных систем. Чтобы получить наилучшую конфигурацию для вашего приложения, вы должны попробовать различные значения max-semi-space-size при выполнении бенчмарков для вашего приложения.

Например, эталонный тест на 64-битной системе:

1
2
3
for MiB in 16 32 64 128; do
    node --max-semi-space-size=$MiB index.js
done

Комментарии