Spec-Zone.ru › Node.js

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

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

Чтобы просмотреть данную документацию как страницу справки в терминале, выполните 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, см. в документации по отладчику.

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

Точка входа в программу — это строка, похожая на спецификатор. Если строка не является абсолютным путем, она разрешается как относительный путь от текущего каталога. Затем этот путь разрешается загрузчиком модулей CommonJS или загрузчиком модулей ES модулей, если передан параметр --experimental-default-type=module. Если соответствующий файл не найден, выбрасывается ошибка.

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

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

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

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

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

Параметры

История
Версия Изменения
v10.12.0

Теперь для параметров Node.js, помимо параметров V8, разрешены подчёркивания вместо дефисов.

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

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

-

Добавлен в: v8.0.0

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

--

Добавлен в: v6.11.0

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

--abort-on-uncaught-exception

Добавлен в: v0.10.8

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

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

--allow-addons

Добавлен в: v21.6.0, v20.12.0
Устойчивость: 1.1 - Активное развитие

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

Пример:

// Attempt to require an native addon
require('nodejs-addon-example'); copy
$ node --experimental-permission --allow-fs-read=* index.js
node:internal/modules/cjs/loader:1319
  return process.dlopen(module, path.toNamespacedPath(filename));
                 ^

Error: Cannot load native addon because loading addons is disabled.
    at Module._extensions..node (node:internal/modules/cjs/loader:1319:18)
    at Module.load (node:internal/modules/cjs/loader:1091:32)
    at Module._load (node:internal/modules/cjs/loader:938:12)
    at Module.require (node:internal/modules/cjs/loader:1115:19)
    at require (node:internal/modules/helpers:130:18)
    at Object.<anonymous> (/home/index.js:1:15)
    at Module._compile (node:internal/modules/cjs/loader:1233:14)
    at Module._extensions..js (node:internal/modules/cjs/loader:1287:10)
    at Module.load (node:internal/modules/cjs/loader:1091:32)
    at Module._load (node:internal/modules/cjs/loader:938:12) {
  code: 'ERR_DLOPEN_DISABLED'
} copy

--allow-child-process

Добавлен в: v20.0.0
Устойчивость: 1.1 - Активное развитие

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

Пример:

const childProcess = require('node:child_process');
// Attempt to bypass the permission
childProcess.spawn('node', ['-e', 'require("fs").writeFileSync("/new-file", "example")']); copy
$ 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'
} copy

--allow-fs-read

История
Версия Изменения
v20.7.0

Пути, разделенные запятыми (,), больше не поддерживаются.

v20.0.0

Добавлен в: v20.0.0

Устойчивость: 1.1 - Активное развитие

Этот флаг настраивает разрешения на чтение файловой системы с использованием Модели разрешений.

Допустимые аргументы для флага --allow-fs-read:

  • * - для разрешения всех FileSystemRead операций.
  • Несколько путей могут быть разрешены с помощью нескольких флагов --allow-fs-read. Пример --allow-fs-read=/folder1/ --allow-fs-read=/folder1/

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

Примеры можно найти в документации по Разрешениям файловой системы.

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

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

$ 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'
} copy

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

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

--allow-fs-write

История
Версия Изменения
v20.7.0

Пути, разделенные запятыми (,), больше не поддерживаются.

v20.0.0

Добавлен в: v20.0.0

Устойчивость: 1.1 - Активное развитие

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

Допустимые аргументы для флага --allow-fs-write:

  • * - для разрешения всех FileSystemWrite операций.
  • Несколько путей могут быть разрешены с помощью нескольких флагов --allow-fs-read. Пример --allow-fs-read=/folder1/ --allow-fs-read=/folder1/

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

Примеры можно найти в документации по Разрешениям файловой системы.

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

--allow-wasi

Добавлен в: v22.3.0
Устойчивость: 1.1 - Активное развитие

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

Пример:

const { WASI } = require('node:wasi');
// Attempt to bypass the permission
new WASI({
  version: 'preview1',
  // Attempt to mount the whole filesystem
  preopens: {
    '/': '/',
  },
}); copy
$ node --experimental-permission --allow-fs-read=* index.js
node:wasi:99
    const wrap = new _WASI(args, env, preopens, stdio);
                 ^

Error: Access to this API has been restricted
    at new WASI (node:wasi:99:18)
    at Object.<anonymous> (/home/index.js:3:1)
    at Module._compile (node:internal/modules/cjs/loader:1476:14)
    at Module._extensions..js (node:internal/modules/cjs/loader:1555:10)
    at Module.load (node:internal/modules/cjs/loader:1288:32)
    at Module._load (node:internal/modules/cjs/loader:1104:12)
    at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:191:14)
    at node:internal/main/run_main_module:30:49 {
  code: 'ERR_ACCESS_DENIED',
  permission: 'WASI',
} copy

--allow-worker

Добавлен в: v20.0.0
Устойчивость: 1.1 - Активное развитие

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

Пример:

const { Worker } = require('node:worker_threads');
// Attempt to bypass the permission
new Worker(__filename); copy
$ 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'
} copy

--build-snapshot

Добавлен в: v18.8.0
Устойчивость: 1 - Экспериментальная

Создаёт снимок (blob) при выходе процесса и записывает его на диск, который можно загрузить позже с помощью --snapshot-blob.

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

$ echo "globalThis.foo = 'I am from the snapshot'" > snapshot.js

# Run snapshot.js to initialize 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 copy

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

$ 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 copy

Дополнительную информацию можно найти в документации API v8.startupSnapshot.

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

  1. Модули пользовательского уровня пока не поддерживаются в снимке, поэтому может быть заснят только один единственный файл. Пользователи могут объединить свои приложения в один скрипт с помощью своего любимого средства сборки, прежде чем создавать снимок.
  2. Только часть встроенных модулей работает в снимке, хотя набор тестов Node.js проверяет, что несколько достаточно сложных приложений можно создать в снимке. Поддержка дополнительных модулей добавляется. Если при создании снимка произойдут какие-либо сбои или неисправности, пожалуйста, отправьте отчёт в следящем за проблемой трекере Node.js и свяжите его со следящей проблемой по снимкам пользовательских приложений.

--build-snapshot-config

Добавлен в: v21.6.0, v20.12.0
Устойчивость: 1 - Экспериментальная

Указывает путь к файлу конфигурации JSON, который настраивает поведение создания снимков.

В настоящее время поддерживаются следующие параметры:

  • builder <строка> Обязательный. Предоставляет имя скрипта, который выполняется перед созданием снимка, как если бы --build-snapshot был передан с именем основного скрипта builder.
  • withoutCodeCache <булево> Необязательный. Включение кэша кода уменьшает время, затрачиваемое на компиляцию функций, включённых в снимок, ценой увеличения размера снимка и потенциального нарушения портативности снимка.

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

-c, --check

История
Версия Изменения
v10.0.0

Параметр --require теперь поддерживается при проверке файла.

v5.0.0, v4.2.0

Добавлен в: v5.0.0, v4.2.0

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

--completion-bash

Добавлен в: v10.12.0

Выводит скрипт завершения bash для Node.js, который можно использовать.

node --completion-bash > node_bash_completion
source node_bash_completion copy

-C condition, --conditions=condition

Добавлен в: v14.9.0, v12.19.0
Стабильность: 1 - Экспериментальная

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

Разрешено любое количество пользовательских имен условий в виде строк.

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

Например, чтобы запустить модуль с разрешениями «разработка»:

node -C development app.js copy

--cpu-prof

Добавлен в: v12.0.0
Стабильность: 1 - Экспериментальная

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

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

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

$ node --cpu-prof index.js
$ ls *.cpuprofile
CPU.20190409.202950.15293.0.0.cpuprofile copy

--cpu-prof-dir

Добавлен в: v12.0.0
Стабильность: 1 - Экспериментальная

Указывает каталог, в котором будут размещены профили CPU, сгенерированные --cpu-prof.

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

--cpu-prof-interval

Добавлен в: v12.2.0
Стабильность: 1 - Экспериментальная

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

--cpu-prof-name

Добавлен в: v12.0.0
Стабильность: 1 - Экспериментальная

Указывает имя файла профиля CPU, сгенерированного --cpu-prof.

--diagnostic-dir=directory

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

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

  • --cpu-prof-dir
  • --heap-prof-dir
  • --redirect-warnings

--disable-warning=code-or-type

Стабильность: 1.1 - Активное развитие
Добавлен в: v21.3.0, v20.11.0

Отключить определенные предупреждения процесса по code или type.

Предупреждения, выводимые из process.emitWarning(), могут содержать code и type. Этот параметр не будет выводить предупреждения, имеющие соответствующее code или type.

Список предупреждений об устаревании.

Типы предупреждений ядра Node.js: DeprecationWarning и ExperimentalWarning

Например, следующий скрипт не выведет DEP0025 require('node:sys') при выполнении с node --disable-warning=DEP0025:

Модули MJS

import sys from 'node:sys';

Модули CJS

const sys = require('node:sys');

Например, следующий скрипт выведет DEP0025 require('node:sys'), но не любые предупреждения об экспериментальных функциях (например, ExperimentalWarning: vm.measureMemory — экспериментальная функция в <=v21) при выполнении с node --disable-warning=ExperimentalWarning:

Модули MJS

import sys from 'node:sys';
import vm from 'node:vm';

vm.measureMemory();

Модули CJS

const sys = require('node:sys');
const vm = require('node:vm');

vm.measureMemory();

--disable-wasm-trap-handler

Добавлен в: v22.2.0

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

$ ulimit -v 5000000
$ node -p "new WebAssembly.Memory({ initial: 10, maximum: 100 });"
[eval]:1
new WebAssembly.Memory({ initial: 10, maximum: 100 });
^

RangeError: WebAssembly.Memory(): could not allocate memory
    at [eval]:1:1
    at runScriptInThisContext (node:internal/vm:209:10)
    at node:internal/process/execution:118:14
    at [eval]-wrapper:6:24
    at runScript (node:internal/process/execution:101:62)
    at evalScript (node:internal/process/execution:136:3)
    at node:internal/main/eval_string:49:3
 copy

--disable-wasm-trap-handler отключает эту оптимизацию, чтобы пользователи могли, по крайней мере, запустить WebAssembly (с менее оптимальной производительностью), когда виртуальное адресное пространство, доступное их процессу Node.js, меньше, чем необходимо ячейке памяти V8 WebAssembly.

--disable-proto=mode

Добавлен в: v13.12.0, v12.17.0

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

--disallow-code-generation-from-strings

Добавлен в: v9.8.0

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

--expose-gc

Добавлен в: v22.3.0
Стабильность: 1 - Экспериментальная. Этот флаг унаследован от V8 и может быть изменён в будущих версиях.

Этот флаг экспонирует расширение gc из V8.

if (globalThis.gc) {
  globalThis.gc();
} copy

--dns-result-order=order

История
Версия Изменения
v22.1.0

Теперь поддерживается ipv6first.

v17.0.0

Изменено значение по умолчанию на verbatim.

v16.4.0, v14.18.0

Добавлен в: v16.4.0, v14.18.0

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

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

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

--enable-fips

Добавлен в: v6.0.0

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

--enable-network-family-autoselection

Добавлен в: v18.18.0

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

--enable-source-maps

История
Версия Изменения
v15.11.0, v14.18.0

Этот API больше не экспериментальный.

v12.12.0

Добавлен в: v12.12.0

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

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

Переопределение Error.prepareStackTrace может предотвратить изменение трассировки стека --enable-source-maps. Вызовите и верните результаты исходного Error.prepareStackTrace в переопределяющей функции, чтобы изменить трассировку стека с помощью source map.

const originalPrepareStackTrace = Error.prepareStackTrace;
Error.prepareStackTrace = (error, trace) => {
  // Modify error and trace and format stack trace with
  // original Error.prepareStackTrace.
  return originalPrepareStackTrace(error, trace);
}; copy

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

--env-file=config

Стабильность: 1.1 - Активное развитие
История
Версия Изменения
v21.7.0, v20.12.0

Добавлена поддержка многострочных значений.

v20.6.0

Добавлен в: v20.6.0

Загружает переменные среды из файла, относящегося к текущему каталогу, делая их доступными для приложений в process.env. Парсятся и применяются переменные среды, конфигурирующие Node.js, такие как NODE_OPTIONS,. Если одна и та же переменная определена в среде и в файле, значение из среды имеет приоритет.

Вы можете передать несколько --env-file аргументов. Последующие файлы переопределяют ранее определённые переменные, определённые в предыдущих файлах.

node --env-file=.env --env-file=.development.env index.js copy

Формат файла — одна строка на каждую пару ключ-значение имени и значения переменной среды, разделённые =:

PORT=3000 copy

Любой текст после # рассматривается как комментарий:

# This is a comment
PORT=3000 # This is also a comment copy

Значения могут начинаться и заканчиваться следующими кавычками: `, " или '. Они опускаются из значений.

USERNAME="nodejs" # will result in `nodejs` as the value. copy

Поддерживаются многострочные значения:

MULTI_LINE="THIS IS
A MULTILINE"
# will result in `THIS IS\nA MULTILINE` as the value. copy

Ключевое слово export перед ключом игнорируется:

export USERNAME="nodejs" # will result in `nodejs` as the value. copy

-e, --eval "script"

История
Версия Изменения
v5.11.0

Встроенные библиотеки теперь доступны как предопределённые переменные.

v0.5.2

Добавлен в: v0.5.2

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

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

--experimental-default-type=type

Добавлен в: v21.0.0, v20.10.0, v18.19.0
Устойчивость: 1.0 - Раннее развитие

Определите, какую систему модулей, module или commonjs, использовать для следующего:

  • Ввод строки, предоставленный через --eval или STDIN, если --input-type не указан.

  • Файлы с расширением .js или без расширения, если файл с расширением package.json отсутствует в том же каталоге или в любом родительском каталоге.

  • Файлы с расширением .js или без расширения, если ближайшее родительское поле package.json не содержит поля "type"; за исключением случаев, когда каталог package.json или любой родительский каталог находится внутри каталога node_modules.

Другими словами, --experimental-default-type=module меняет все места, где Node.js по умолчанию использует CommonJS, на использование ECMAScript модулей, за исключением каталогов и подкаталогов ниже node_modules, для обеспечения обратной совместимости.

В --experimental-default-type=module и --experimental-wasm-modules, файлы без расширения будут обрабатываться как WebAssembly, если они начинаются с магического числа WebAssembly (\0asm); в противном случае они будут обрабатываться как JavaScript модули ES.

--experimental-detect-module

Добавлен в: v21.1.0, v20.10.0
Устойчивость: 1.1 - Активное развитие

Node.js будет проверять исходный код неоднозначного ввода, чтобы определить, содержит ли он синтаксис модулей ES; если такой синтаксис обнаружен, ввод будет обрабатываться как модуль ES.

Неоднозначный ввод определяется как:

  • Файлы с расширением .js или без расширения; и либо отсутствует файл-контроль package.json, либо он не содержит поля type; и --experimental-default-type не указан.
  • Строковый ввод (--eval или STDIN), когда ни --input-type , ни --experimental-default-type не указаны.

Синтаксис модулей ES определяется как синтаксис, который приведёт к ошибке при оценке как CommonJS. Это включает в себя следующее:

  • import операторы (но не import() выражения, которые допустимы в CommonJS).
  • export операторы.
  • import.meta ссылки.
  • await на верхнем уровне модуля.
  • Лексические повторные объявления переменных оболочки CommonJS (require, module, exports, __dirname, __filename).

--experimental-eventsource

Добавлен в: v22.3.0

Включить экспозицию EventSource Web API в глобальной области видимости.

--experimental-import-meta-resolve

История
Версия Изменения
v20.6.0, v18.19.0

Синхронный import.meta.resolve стал доступен по умолчанию, при этом флаг сохранился для включения экспериментального второго аргумента, как это поддерживалось ранее.

v13.9.0, v12.16.2

Добавлен в: v13.9.0, v12.16.2

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

Ранее вся функция import.meta.resolve была ограничена.

--experimental-loader=module

История
Версия Изменения
v12.11.1

Этот флаг был переименован из --loader в --experimental-loader.

v8.8.0

Добавлен в: v8.8.0

Этот флаг не рекомендуется и может быть удалён в будущих версиях Node.js. Пожалуйста, используйте --import с register() вместо этого.

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

--experimental-network-imports

Добавлен в: v17.6.0, v16.15.0
Устойчивость: 1 - Экспериментальный

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

--experimental-permission

Добавлен в: v20.0.0
Устойчивость: 1.1 - Активное развитие

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

  • Файловая система — управляемая через --allow-fs-read, --allow-fs-write флаги
  • Процесс-дочерний — управляемый через --allow-child-process флаг
  • Потоки-рабочие — управляемые через --allow-worker флаг
  • WASI — управляемые через --allow-wasi флаг

--experimental-require-module

Добавлен в: v22.0.0
Устойчивость: 1.1 - Активное развитие

Поддержка загрузки синхронного графа модулей ES в require().

См. Загрузка ECMAScript модулей с помощью require().

--experimental-sea-config

Добавлен в: v20.0.0
Устойчивость: 1 - Экспериментальный

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

--experimental-shadow-realm

Добавлен в: v19.0.0, v18.13.0

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

--experimental-test-coverage

История
Версия Изменения
v20.1.0, v18.17.0

Этот параметр можно использовать с --test.

v19.7.0, v18.15.0

Добавлен в: v19.7.0, v18.15.0

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

--experimental-test-module-mocks

Добавлен в: v22.3.0
Устойчивость: 1.0 - Раннее развитие

Включить имитацию модулей в исполнителе тестов.

--experimental-test-snapshots

Добавлен в: v22.3.0
Устойчивость: 1.0 - Раннее развитие

Включить тестирование снимков в исполнителе тестов.

--experimental-vm-modules

Добавлен в: v9.6.0

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

--experimental-wasi-unstable-preview1

История
Версия Изменения
v20.0.0, v18.17.0

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

v13.6.0

изменён с --experimental-wasi-unstable-preview0 на --experimental-wasi-unstable-preview1.

v13.3.0, v12.16.0

Добавлен в: v13.3.0, v12.16.0

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

--experimental-wasm-modules

Добавлен в: v12.3.0

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

--force-context-aware

Добавлен в: v12.12.0

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

--force-fips

Добавлен в: v6.0.0

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

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

Добавлен в: v18.3.0, v16.17.0

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

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

--frozen-intrinsics

Добавлен в: v11.12.0
Стабильность: 1 - Экспериментальная

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

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

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

--heap-prof

Добавлен в: v12.4.0
Стабильность: 1 - Экспериментальная

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

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

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

$ node --heap-prof index.js
$ ls *.heapprofile
Heap.20190409.202950.15293.0.001.heapprofile copy

--heap-prof-dir

Добавлен в: v12.4.0
Стабильность: 1 - Экспериментальная

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

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

--heap-prof-interval

Добавлен в: v12.4.0
Стабильность: 1 - Экспериментальная

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

--heap-prof-name

Добавлен в: v12.4.0
Стабильность: 1 - Экспериментальная

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

--heapsnapshot-near-heap-limit=max_count

Добавлен в: v15.1.0, v14.18.0
Стабильность: 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, и сделает всё возможное, чтобы избежать использования всей доступной памяти процесса. Когда процесс использует больше памяти, чем система считает целесообразным, процесс может быть прерван системой, в зависимости от конфигурации системы.

$ 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
.... copy

--heapsnapshot-signal=signal

Добавлен в: v12.0.0

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

$ 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 copy

-h, --help

Добавлен в: v0.1.3

Выводит параметры командной строки node. Выход этого параметра менее подробный, чем в этом документе.

--icu-data-dir=file

Добавлен в: v0.11.15

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

--import=module

Добавлен в: v19.0.0, v18.18.0
Стабильность: 1 - Экспериментальная

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

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

--input-type=type

Добавлен в: v12.0.0

Настраивает Node.js для интерпретации --eval или STDIN ввода как модулей CommonJS или ES. Допустимые значения "commonjs" или "module". Значение по умолчанию "commonjs", если не используется --experimental-default-type=module.

REPL не поддерживает этот параметр. Использование --input-type=module с --print вызовет ошибку, так как --print не поддерживает синтаксис модулей ES.

--insecure-http-parser

Добавлен в: v13.4.0, v12.15.0, v10.19.0

Включает флаги снисходительности для парсера HTTP. Это может позволить меж совместимость с нестандартными реализациями HTTP.

При включении парсер будет принимать следующие:

  • Неверные значения заголовков HTTP.
  • Неверные версии HTTP.
  • Разрешить сообщение, содержащее как Transfer-Encoding , так и Content-Length заголовки.
  • Разрешить дополнительные данные после сообщения, когда Connection: close присутствует.
  • Разрешить дополнительные кодировки передачи после chunked.
  • Разрешить \n использоваться в качестве разделителя токенов вместо \r\n.
  • Разрешить \r\n не предоставляться после фрагмента.
  • Разрешить пробелы после размера фрагмента и перед \r\n.

Всё вышеперечисленное подвергнет ваше приложение атаке подмены или отравления запросов. Избегайте использования этого параметра.

--inspect[=[host:]port]

Добавлен в: v6.3.0

Активирует инспектор на host:port. Значение по умолчанию — 127.0.0.1:9229.

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

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

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

Если вы указываете хост, убедитесь, что:

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

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

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

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

Добавлен в: v7.6.0

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

Смотрите Интеграцию инспектора V8 для Node.js для получения дополнительных сведений об отладчике Node.js.

--inspect-port=[host:]port

Добавлен в: v7.6.0

Устанавливает host:port для использования при активации инспектора. Полезно при активации инспектора путём отправки сигнала SIGUSR1.

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

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

--inspect-publish-uid=stderr,http

Указывает способы экспонирования URL веб-соккета инспектора.

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

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

Добавлен в: v22.2.0

Активирует инспектор на host:port и ждёт подключения отладчика. Значение по умолчанию host:port - 127.0.0.1:9229.

См. Интеграцию инспектора V8 для Node.js для получения дополнительных сведений об отладчике Node.js.

-i, --interactive

Добавлен в: v0.7.7

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

--jitless

Добавлен в: v12.0.0
Стабильность: 1 - Экспериментальная. Этот флаг унаследован от V8 и может быть изменён в исходном коде.

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

--max-http-header-size=size

История
Версия Изменения
v13.13.0

Изменено максимальный размер HTTP-заголовков по умолчанию с 8 КБ на 16 КБ.

v11.6.0, v10.15.0

Добавлен в: v11.6.0, v10.15.0

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

--napi-modules

Добавлен в: v7.10.0

Этот параметр не имеет эффекта. Он сохранён для совместимости.

--network-family-autoselection-attempt-timeout

Добавлен в: v22.1.0

Устанавливает значение по умолчанию для таймаута попыток автовыбора сетевой семьи. Для получения более подробной информации см. net.getDefaultAutoSelectFamilyAttemptTimeout().

--no-addons

Добавлен в: v16.10.0, v14.19.0

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

--no-deprecation

Добавлен в: v0.8.0

Отключить предупреждения о устаревших функциях.

--no-experimental-fetch

Добавлен в: v18.0.0

Отключить экспонирование API Fetch в глобальном пространстве имён.

--no-experimental-global-customevent

Добавлен в: v19.0.0

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

--no-experimental-global-navigator

Добавлен в: v21.2.0
Стабильность: 1 - Экспериментальная

Отключить экспонирование API Navigator в глобальном пространстве имён.

--no-experimental-global-webcrypto

Добавлен в: v19.0.0

Отключить экспонирование Web Crypto API в глобальном пространстве имён.

--no-experimental-repl-await

Добавлен в: v16.6.0

Используйте этот флаг для отключения `await` на верхнем уровне в REPL.

--no-experimental-websocket

Добавлен в: v22.0.0

Используйте этот флаг для отключения экспериментальной поддержки WebSocket.

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

Добавлен в: v17.0.0

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

--no-force-async-hooks-checks

Добавлен в: v9.0.0

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

--no-global-search-paths

Добавлен в: v16.10.0

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

--no-network-family-autoselection

История
Версия Изменения
v20.0.0

Флаг был переименован с --no-enable-network-family-autoselection на --no-network-family-autoselection. Старое имя всё ещё может работать как псевдоним.

v19.4.0

Добавлен в: v19.4.0

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

--no-warnings

Добавлен в: v6.0.0

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

--node-memory-debug

Добавлен в: v15.0.0, v14.18.0

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

--openssl-config=file

Добавлен в: v6.9.0

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

--openssl-legacy-provider

Добавлен в: v17.0.0, v16.17.0

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

--openssl-shared-config

Добавлен в: v18.5.0, v16.17.0, v14.21.0

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

--pending-deprecation

Добавлен в: v8.0.0

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

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

--preserve-symlinks

Добавлен в: v6.3.0

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

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

{appDir}
 ├── app
 │   ├── index.js
 │   └── node_modules
 │       ├── moduleA -> {appDir}/moduleA
 │       └── moduleB
 │           ├── index.js
 │           └── package.json
 └── moduleA
     ├── index.js
     └── package.json copy

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

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

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

--preserve-symlinks-main

Добавлен в: v10.2.0

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

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

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

См. --preserve-symlinks для получения дополнительной информации.

-p, --print "script"

История
Версия Изменения
v5.11.0

Встроенные библиотеки теперь доступны как предварительно определённые переменные.

v0.6.4

Добавлен в: v0.6.4

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

--experimental-print-required-tla

Добавлен в: v22.0.0

Этот флаг полезен только при включении --experimental-require-module.

Если ES-модуль, который require() содержит верхнеуровневый `await`, этот флаг позволяет Node.js оценить модуль, попытаться найти верхнеуровневые `await` и вывести их расположение, чтобы помочь пользователям их найти.

--prof

Добавлен в: v2.0.0

Генерировать выходные данные профилировщика V8.

--prof-process

Добавлен в: v5.2.0

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

--redirect-warnings=file

Добавлен в: v8.0.0

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

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

--report-compact

Добавлен в: v13.12.0, v12.17.0

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

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

История
Версия Изменения
v13.12.0, v12.17.0

Этот параметр больше не является экспериментальным.

v12.0.0

Изменён с --diagnostic-report-directory на --report-directory.

v11.8.0

Добавлен в: v11.8.0

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

--report-filename=filename

История
Версия Изменения
v13.12.0, v12.17.0

Этот параметр больше не является экспериментальным.

v12.0.0

изменён с --diagnostic-report-filename на --report-filename.

v11.8.0

Добавлен в: v11.8.0

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

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

--report-on-fatalerror

История
Версия Изменения
v14.0.0, v13.14.0, v12.17.0

Этот параметр больше не является экспериментальным.

v12.0.0

изменён с --diagnostic-report-on-fatalerror на --report-on-fatalerror.

v11.8.0

Добавлен в: v11.8.0

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

--report-on-signal

История
Версия Изменения
v13.12.0, v12.17.0

Этот параметр больше не является экспериментальным.

v12.0.0

изменён с --diagnostic-report-on-signal на --report-on-signal.

v11.8.0

Добавлен в: v11.8.0

Включает создание отчёта при получении указанного (или предопределённого) сигнала для работающего процесса Node.js. Сигнал для запуска создания отчета задаётся через --report-signal.

--report-signal=signal

История
Версия Изменения
v13.12.0, v12.17.0

Этот параметр больше не является экспериментальным.

v12.0.0

изменён с --diagnostic-report-signal на --report-signal.

v11.8.0

Добавлен в: v11.8.0

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

--report-uncaught-exception

История
Версия Изменения
v18.8.0, v16.18.0

Отчёт не создаётся, если необработанное исключение обработано.

v13.12.0, v12.17.0

Этот параметр больше не является экспериментальным.

v12.0.0

изменён с --diagnostic-report-uncaught-exception на --report-uncaught-exception.

v11.8.0

Добавлен в: v11.8.0

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

--report-exclude-network

Добавлен в: v22.0.0

Исключить header.networkInterfaces из диагностического отчёта. По умолчанию это не установлено, и сетевые интерфейсы включены.

-r, --require module

Добавлен в: v1.6.0

Загрузить указанный модуль при запуске.

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

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

--run

История
Версия Изменения
v22.3.0

Добавлена переменная среды NODE_RUN_SCRIPT_NAME.

v22.3.0

Добавлена переменная среды NODE_RUN_PACKAGE_JSON_PATH.

v22.3.0

Переходит до корневого каталога и находит файл package.json для выполнения команды, и обновляет переменную среды PATH соответственно.

v22.0.0

Добавлен в: v22.0.0

Уровень стабильности: 1.1 - Активное развитие

Выполняет указанную команду из объекта "scripts" в файле package.json. Если "command" не указан, он выведет список доступных скриптов.

--run переходит до корневого каталога и находит файл package.json для выполнения команды оттуда.

--run добавляет ./node_modules/.bin для каждого предка текущего каталога к PATH для выполнения бинарных файлов из разных папок, где присутствуют несколько папок node_modules, если ancestor-folder/node_modules/.bin является каталогом.

Например, следующая команда выполнит скрипт test пакета package.json в текущей папке:

$ node --run test copy

Вы также можете передавать аргументы команде. Любой аргумент после -- будет добавлен к скрипту:

$ node --run test -- --verbose copy
Умышленные ограничения

node --run не предназначен для соответствия поведению npm run или команд run других менеджеров пакетов. Реализация Node.js намеренно более ограничена, чтобы сосредоточиться на максимальной производительности для наиболее распространённых случаев использования. Некоторые функции других реализаций run умышленно исключены:

  • Выполнение скриптов pre или post помимо указанного скрипта.
  • Определение переменных среды, специфичных для менеджера пакетов.
Переменные окружения

Следующие переменные окружения устанавливаются при выполнении скрипта с помощью --run:

  • NODE_RUN_SCRIPT_NAME: Имя выполняемого скрипта. Например, если используется --run для выполнения test, значение этой переменной будет test.
  • NODE_RUN_PACKAGE_JSON_PATH: Путь к файлу package.json, который обрабатывается.

--secure-heap=n

Добавлен в: v15.6.0

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

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

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

Защищённая куча отключена по умолчанию.

Защищённая куча недоступна в Windows.

См. CRYPTO_secure_malloc_init для получения дополнительных сведений.

--secure-heap-min=n

Добавлен в: v15.6.0

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

--snapshot-blob=path

Добавлен в: v18.8.0
Уровень стабильности: 1 - Экспериментальный

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

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

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

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

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

--test

История
Версия Изменения
v20.0.0

Система тестирования стала стабильной.

v19.2.0, v18.13.0

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

v18.1.0, v16.17.0

Добавлен в: v18.1.0, v16.17.0

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

--test-concurrency

Добавлен в: v21.0.0, v20.10.0, v18.19.0

Максимальное количество файлов тестов, которые CLI-интерфейс тестового запуска будет выполнять одновременно. Значение по умолчанию — os.availableParallelism() - 1.

--test-force-exit

Добавлен в: v22.0.0

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

--test-name-pattern

История
Версия Изменения
v20.0.0

Тестовый запуск теперь стабилен.

v18.11.0

Добавлен в: v18.11.0

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

Если и --test-name-pattern и --test-skip-pattern заданы, тесты должны удовлетворять обеим требованиям для выполнения.

--test-only

История
Версия Изменения
v20.0.0

Тестовый запуск теперь стабилен.

v18.0.0, v16.17.0

Добавлен в: v18.0.0, v16.17.0

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

--test-reporter

История
Версия Изменения
v20.0.0

Тестовый запуск теперь стабилен.

v19.6.0, v18.15.0

Добавлен в: v19.6.0, v18.15.0

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

--test-reporter-destination

История
Версия Изменения
v20.0.0

Тестовый запуск теперь стабилен.

v19.6.0, v18.15.0

Добавлен в: v19.6.0, v18.15.0

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

--test-shard

Добавлен в: v20.5.0, v18.19.0

Часть набора тестов для выполнения в формате <index>/<total>, где

index — положительное целое число, индекс раздела total — положительное целое число, общее количество разделов. Эта команда разделит все файлы тестов на total равных частей и выполнит только те, которые попадут в index раздел.

Например, чтобы разбить набор тестов на три части, используйте следующее:

node --test --test-shard=1/3
node --test --test-shard=2/3
node --test --test-shard=3/3 copy

--test-skip-pattern

Добавлен в: v22.1.0

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

Если и --test-name-pattern и --test-skip-pattern заданы, тесты должны удовлетворять обеим требованиям для выполнения.

--test-timeout

Добавлен в: v21.2.0, v20.11.0

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

--test-update-snapshots

Добавлен в: v22.3.0
Устойчивость: 1.0 - Ранняя разработка

Перегенерирует файл снимков, используемый тестовым запуском для тестирования снимков. Node.js необходимо запустить с флагом --experimental-test-snapshots для использования этой функции.

--throw-deprecation

Добавлен в: v0.11.14

Выбрасывать ошибки для устаревших функций.

--title=title

Добавлен в: v10.7.0

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

--tls-cipher-list=list

Добавлен в: v4.0.0

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

--tls-keylog=file

Добавлен в: v13.2.0, v12.16.0

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

--tls-max-v1.2

Добавлен в: v12.0.0, v10.20.0

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

--tls-max-v1.3

Добавлен в: v12.0.0

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

--tls-min-v1.0

Добавлен в: v12.0.0, v10.20.0

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

--tls-min-v1.1

Добавлен в: v12.0.0, v10.20.0

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

--tls-min-v1.2

Добавлен в: v12.2.0, v10.20.0

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

--tls-min-v1.3

Добавлен в: v12.0.0

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

--trace-atomics-wait

Добавлен в: v14.3.0Устарел с: v18.8.0, v16.18.0
Устойчивость: 0 - Устарел

Печать кратких сводок вызовов Atomics.wait() в stderr. Вывод может выглядеть так:

(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 copy

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

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

--trace-deprecation

Добавлен в: v0.8.0

Печать стеков вызовов для устаревших функций.

--trace-event-categories

Добавлен в: v7.7.0

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

--trace-event-file-pattern

Добавлен в: v9.8.0

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

--trace-events-enabled

Добавлен в: v7.7.0

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

--trace-exit

Добавлен в: v13.5.0, v12.16.0

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

--trace-sigint

Добавлен в: v13.9.0, v12.17.0

Печать стека вызовов при получении SIGINT.

--trace-sync-io

Добавлен в: v2.1.0

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

--trace-tls

Добавлен в: v12.2.0

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

--trace-uncaught

Добавлен в: v13.1.0

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

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

--trace-warnings

Добавлен в: v6.0.0

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

--track-heap-objects

Добавлен в: v2.4.0

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

--unhandled-rejections=mode

История
Версия Изменения
v15.0.0

Изменено значение по умолчанию на throw. Ранее выдавалось предупреждение.

v12.0.0, v10.17.0

Добавлена в: v12.0.0, v10.17.0

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

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

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

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

Добавлена в: v6.11.0

Использовать объединенный магазин сертификатов Mozilla, предоставленный текущей версией Node.js, или использовать магазин сертификатов OpenSSL по умолчанию. Магазин сертификатов по умолчанию выбирается во время сборки.

Объединенный магазин сертификатов, предоставляемый Node.js, представляет собой моментальный снимок магазина сертификатов Mozilla, который фиксируется во время выпуска. Он идентичен на всех поддерживаемых платформах.

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

См. SSL_CERT_DIR и SSL_CERT_FILE.

--use-largepages=mode

Добавлена в: v13.6.0, v12.17.0

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

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

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

--v8-options

Добавлена в: v0.1.3

Вывести опции командной строки V8.

--v8-pool-size=num

Добавлена в: v5.10.0

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

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

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

-v, --version

Добавлена в: v0.1.3

Вывести версию node.

--watch

История
Версия Изменения
v22.0.0

Режим наблюдения теперь стабилен.

v19.2.0, v18.13.0

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

v18.11.0, v16.19.0

Добавлена в: v18.11.0, v16.19.0

Устойчивость: 2 - Стабильно

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

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

node --watch index.js copy

--watch-path

История
Версия Изменения
v22.0.0

Режим наблюдения теперь стабилен.

v18.11.0, v16.19.0

Добавлена в: v18.11.0, v16.19.0

Устойчивость: 2 - Стабильно

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

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

node --watch-path=./src --watch-path=./tests index.js copy

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

--watch-preserve-output

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

node --watch --watch-preserve-output test.js copy

--zero-fill-buffers

Добавлена в: v6.0.0

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

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

FORCE_COLOR=[1, 2, 3]

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

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

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

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

NO_COLOR=<any>

NO_COLOR — псевдоним для NODE_DISABLE_COLORS. Значение переменной среды произвольное.

NODE_COMPILE_CACHE=dir

Добавлена в: v22.1.0
Устойчивость: 1.1 - Активное развитие

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

Для очистки сгенерированного кэша кода достаточно удалить каталог. Он будет создан заново при следующем использовании того же каталога для NODE_COMPILE_CACHE.

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

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

NODE_DEBUG=module[,…]

Добавлена в: v0.1.32

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

NODE_DEBUG_NATIVE=module[,…]

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

NODE_DISABLE_COLORS=1

Добавлена в: v0.3.0

При установке цвета не будут использоваться в REPL.

NODE_EXTRA_CA_CERTS=file

Добавлена в: v7.3.0

При установке хорошо известные "корневые" сертификационные центры (например, 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

Добавлена в: v0.11.15

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

NODE_NO_WARNINGS=1

Добавлена в: v6.11.0

При установке в 1, предупреждения процесса будут отключены.

NODE_OPTIONS=options...

Добавлена в: v8.0.0

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

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

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

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

# The inspector will be available on port 5555
NODE_OPTIONS='--inspect=localhost:4444' node --inspect=localhost:5555 copy

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

NODE_OPTIONS='--require "./a.js"' node --require "./b.js"
# is equivalent to:
node --require "./a.js" --require "./b.js" copy

Разрешенные параметры Node.js приведены в следующем списке. Если параметр поддерживает варианты --XX и --no-XX, оба поддерживаются, но только один включён в список ниже.

  • --allow-addons
  • --allow-child-process
  • --allow-fs-read
  • --allow-fs-write
  • --allow-wasi
  • --allow-worker
  • --conditions, -C
  • --diagnostic-dir
  • --disable-proto
  • --disable-warning
  • --disable-wasm-trap-handler
  • --dns-result-order
  • --enable-fips
  • --enable-network-family-autoselection
  • --enable-source-maps
  • --experimental-abortcontroller
  • --experimental-default-type
  • --experimental-detect-module
  • --experimental-eventsource
  • --experimental-import-meta-resolve
  • --experimental-json-modules
  • --experimental-loader
  • --experimental-modules
  • --experimental-network-imports
  • --experimental-permission
  • --experimental-print-required-tla
  • --experimental-require-module
  • --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
  • --import
  • --input-type
  • --insecure-http-parser
  • --inspect-brk
  • --inspect-port, --debug-port
  • --inspect-publish-uid
  • --inspect-wait
  • --inspect
  • --max-http-header-size
  • --napi-modules
  • --network-family-autoselection-attempt-timeout
  • --no-addons
  • --no-deprecation
  • --no-experimental-fetch
  • --no-experimental-global-customevent
  • --no-experimental-global-navigator
  • --no-experimental-global-webcrypto
  • --no-experimental-repl-await
  • --no-experimental-websocket
  • --no-extra-info-on-fatal-exception
  • --no-force-async-hooks-checks
  • --no-global-search-paths
  • --no-network-family-autoselection
  • --no-warnings
  • --node-memory-debug
  • --openssl-config
  • --openssl-legacy-provider
  • --openssl-shared-config
  • --pending-deprecation
  • --preserve-symlinks-main
  • --preserve-symlinks
  • --prof-process
  • --redirect-warnings
  • --report-compact
  • --report-dir, --report-directory
  • --report-exclude-network
  • --report-filename
  • --report-on-fatalerror
  • --report-on-signal
  • --report-signal
  • --report-uncaught-exception
  • --require, -r
  • --secure-heap-min
  • --secure-heap
  • --snapshot-blob
  • --test-only
  • --test-reporter-destination
  • --test-reporter
  • --test-shard
  • --throw-deprecation
  • --title
  • --tls-cipher-list
  • --tls-keylog
  • --tls-max-v1.2
  • --tls-max-v1.3
  • --tls-min-v1.0
  • --tls-min-v1.1
  • --tls-min-v1.2
  • --tls-min-v1.3
  • --trace-atomics-wait
  • --trace-deprecation
  • --trace-event-categories
  • --trace-event-file-pattern
  • --trace-events-enabled
  • --trace-exit
  • --trace-sigint
  • --trace-sync-io
  • --trace-tls
  • --trace-uncaught
  • --trace-warnings
  • --track-heap-objects
  • --unhandled-rejections
  • --use-bundled-ca
  • --use-largepages
  • --use-openssl-ca
  • --v8-pool-size
  • --watch-path
  • --watch-preserve-output
  • --watch
  • --zero-fill-buffers

Доступные параметры V8:

  • --abort-on-uncaught-exception
  • --disallow-code-generation-from-strings
  • --enable-etw-stack-walking
  • --expose-gc
  • --huge-max-old-generation-size
  • --interpreted-frames-native-stack
  • --jitless
  • --max-old-space-size
  • --max-semi-space-size
  • --perf-basic-prof-only-functions
  • --perf-basic-prof
  • --perf-prof-unwinding-info
  • --perf-prof
  • --stack-trace-limit

--perf-basic-prof-only-functions, --perf-basic-prof, --perf-prof-unwinding-info, и --perf-prof доступны только в Linux.

--enable-etw-stack-walking доступен только в Windows.

NODE_PATH=path[:…]

Добавлена в: v0.1.32

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

В Windows это ';'-разделенный список.

NODE_PENDING_DEPRECATION=1

Добавлена в: v8.0.0

При установке в 1, выводить предупреждения о предстоящем устаревании.

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

NODE_PENDING_PIPE_INSTANCES=instances

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

NODE_PRESERVE_SYMLINKS=1

Добавлен в: v7.1.0

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

NODE_REDIRECT_WARNINGS=file

Добавлен в: v8.0.0

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

NODE_REPL_EXTERNAL_MODULE=file

История
Версия Изменения
v22.3.0

Убрана возможность использования этой переменной среды с kDisableNodeOptionsEnv для встраиваемых компонентов.

v13.0.0, v12.16.0

Добавлен в: v13.0.0, v12.16.0

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

NODE_REPL_HISTORY=file

Добавлен в: v3.0.0

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

NODE_SKIP_PLATFORM_CHECK=value

Добавлен в: v14.5.0

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

NODE_TEST_CONTEXT=value

Если value равно 'child', параметры отчета тестов будут переопределены, и выходные данные тестов будут отправлены в stdout в формате TAP. Если задано любое другое значение, Node.js не дает гарантий относительно используемого формата отчета или его стабильности.

NODE_TLS_REJECT_UNAUTHORIZED=value

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

NODE_V8_COVERAGE=dir

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

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

Выходные данные покрытия

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

{
  "result": [
    {
      "scriptId": "67",
      "url": "internal/tty.js",
      "functions": []
    }
  ]
} copy
Кэш карт сопоставления исходного кода
Уровень стабильности: 1 - Экспериментальный

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

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

{
  "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
      ]
    }
  }
} copy

OPENSSL_CONF=file

Добавлен в: v6.11.0

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

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

SSL_CERT_DIR=dir

Добавлен в: v7.7.0

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

Обратите внимание, что если среда дочернего процесса не указана явно, эта переменная среды будет унаследована любыми дочерними процессами, и если они используют OpenSSL, это может привести к доверию к тем же ЦС, что и у node.

SSL_CERT_FILE=file

Добавлен в: v7.7.0

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

Обратите внимание, что если среда дочернего процесса не указана явно, эта переменная среды будет унаследована любыми дочерними процессами, и если они используют OpenSSL, это может привести к доверию к тем же ЦС, что и у node.

TZ

История
Версия Изменения
v16.2.0

Изменение переменной TZ с помощью process.env.TZ = изменяет часовой пояс и на Windows.

v13.0.0

Изменение переменной TZ с помощью process.env.TZ = изменяет часовой пояс на системах POSIX.

v0.0.1

Добавлен в: v0.0.1

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

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

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

UV_THREADPOOL_SIZE=size

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

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

  • все fs API, кроме API наблюдения за файлами и тех, которые явным образом синхронны
  • асинхронные криптографические 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.

UV_USE_IO_URING=value

Включить или отключить использование libuv io_uring на поддерживаемых платформах.

На поддерживаемых платформах io_uring может значительно улучшить производительность различных асинхронных операций ввода-вывода.

io_uring отключено по умолчанию из-за проблем безопасности. При включении io_uring приложения не должны изменять идентификатор пользователя процесса во время выполнения. В этом случае функции JavaScript, такие как process.setuid(), недоступны, а нативные плагины не должны вызывать системные функции, такие как setuid(2).

Эта переменная среды реализуется зависимостью Node.js и может быть удалена в будущих версиях Node.js. Для поведения этой переменной среды не предоставляются гарантии стабильности.

Полезные параметры V8

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

--abort-on-uncaught-exception

--disallow-code-generation-from-strings

--enable-etw-stack-walking

--expose-gc

--harmony-shadow-realm

--huge-max-old-generation-size

--jitless

--interpreted-frames-native-stack

--prof

--perf-basic-prof

--perf-basic-prof-only-functions

--perf-prof

--perf-prof-unwinding-info

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

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

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

node --max-old-space-size=1536 index.js copy

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

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

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

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

Например, бенчмарк на 64-битной системе:

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

--security-revert

--stack-trace-limit=limit

Максимальное количество кадров стека для сбора в трассировке стека ошибки. Установка значения 0 отключает сбор трассировки стека. Значение по умолчанию составляет 10.

node --stack-trace-limit=12 -p -e "Error.stackTraceLimit" # prints 12 copy

© Joyent, Inc. and other Node contributors
Licensed under the MIT License.
Node.js is a trademark of Joyent, Inc. and is used with its permission.
We are not endorsed by or affiliated with Joyent.
https://nodejs.org/api/cli.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API