Spec-Zone.ru › Node.js 22 LTS

Интерфейс командной строки

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.
  • Файл имеет расширение .mjs или .wasm.
  • Файл не имеет расширения .cjs, а ближайший родительский файл package.json содержит поле верхнего уровня "type" со значением "module".

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

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

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

  • --experimental-addon-modules для файлов с расширением .node.

Параметры

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

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

Стабильность: 2 — Стабильный

Во всех параметрах, включая параметры 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

Прерывание вместо выхода приводит к созданию файла дампа памяти для последующего анализа с помощью отладчика (например, 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 --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

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

При создании процесса с включённой моделью разрешений флаги наследуются дочерним процессом Node.js через переменную окружения NODE_OPTIONS.

v20.0.0

Добавлено в: 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 --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 node:internal/main/run_main_module:17:47 {
  code: 'ERR_ACCESS_DENIED',
  permission: 'ChildProcess'
} copy

API child_process.fork() наследует аргументы запуска родительского процесса. Это означает, что если Node.js запущен с включённой моделью разрешений и установлен флаг --allow-child-process, любой дочерний процесс, созданный с помощью child_process.fork(), автоматически получит все необходимые флаги модели разрешений.

Это поведение также применяется к child_process.spawn(), но в этом случае флаги передаются через переменную окружения NODE_OPTIONS, а не напрямую через аргументы процесса.

--allow-fs-read

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

Точки входа приложения разрешено читать неявно.

v22.13.0

Модель разрешений и флаги --allow-fs стабильны.

v20.7.0

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

v20.0.0

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

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

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

  • * — разрешить все операции FileSystemRead.
  • Можно разрешить несколько путей, используя несколько флагов --allow-fs-read. Пример: --allow-fs-read=/folder1/ --allow-fs-read=/folder1/

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

Модуль инициализатора и пользовательские модули --require имеют неявное разрешение на чтение.

$ node --permission -r custom-require.js -r custom-require-2.js index.js copy
  • custom-require.js, custom-require-2.js и index.js по умолчанию будут включены в список разрешённых для чтения.
process.has('fs.read', 'index.js'); // true
process.has('fs.read', 'custom-require.js'); // true
process.has('fs.read', 'custom-require-2.js'); // true copy

--allow-fs-write

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

Модель разрешений и флаги --allow-fs стабильны.

v20.7.0

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

v20.0.0

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

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

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

  • * — разрешить все операции FileSystemWrite.
  • Можно разрешить несколько путей, используя несколько флагов --allow-fs-write. Пример: --allow-fs-write=/folder1/ --allow-fs-write=/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 --permission --allow-fs-read=* index.js

Error: Access to this API has been restricted
    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 --permission --allow-fs-read=* index.js

Error: Access to this API has been restricted
    at node:internal/main/run_main_module:17:47 {
  code: 'ERR_ACCESS_DENIED',
  permission: 'WorkerThreads'
} copy

--build-snapshot

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

При завершении процесса создаёт снимок и записывает его на диск; позднее его можно загрузить с помощью --snapshot-blob.

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

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

-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

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

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

v14.9.0, v12.19.0

Добавлено в: v14.9.0, v12.19.0

Задаёт пользовательские условия разрешения для условного экспорта.

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

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

Например, чтобы запустить модуль с разрешением "development":

node -C development app.js copy

--cpu-prof

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

Флаги --cpu-prof теперь стабильны.

v12.0.0

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

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

Если --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-name, переданное значение используется как шаблон имени файла. Поддерживается следующий заполнитель, который заменяется во время выполнения:

  • ${pid} — идентификатор текущего процесса
$ node --cpu-prof --cpu-prof-name 'CPU.${pid}.cpuprofile' index.js
$ ls *.cpuprofile
CPU.15293.cpuprofile copy

--cpu-prof-dir

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

Флаги --cpu-prof теперь стабильны.

v12.0.0

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

Задаёт каталог, в который будут помещаться профили ЦП, созданные с помощью --cpu-prof.

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

--cpu-prof-interval

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

Флаги --cpu-prof теперь стабильны.

v12.2.0

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

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

--cpu-prof-name

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

Флаги --cpu-prof теперь стабильны.

v12.0.0

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

Задаёт имя файла профиля ЦП, созданного с помощью --cpu-prof.

--diagnostic-dir=directory

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

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

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

--disable-proto=mode

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

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

--disable-sigusr1

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

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

v22.14.0

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

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

--disable-warning=code-or-type

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

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

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

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

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

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

Модули JavaScript
import sys from 'node:sys';
CommonJS
const sys = require('node:sys');

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

Модули JavaScript
import sys from 'node:sys';
import vm from 'node:vm';

vm.measureMemory();
CommonJS
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 пространство виртуальных адресов меньше необходимого для области памяти WebAssembly V8.

--disallow-code-generation-from-strings

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

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

--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 должен быть собран с OpenSSL, совместимым с FIPS.)

--enable-network-family-autoselection

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

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

--enable-source-maps

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

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

v12.12.0

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

Включает поддержку карт исходного кода для трассировок стека.

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

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

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

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

--entry-url

Добавлено в: v22.10.0
Стабильность: 1 — Экспериментальный

Если этот параметр указан, Node.js будет интерпретировать точку входа как URL, а не как путь.

Применяются правила разрешения модулей ECMAScript.

Любые параметры запроса или хеш в URL будут доступны через import.meta.url.

node --entry-url 'file:///path/to/file.js?queryparams=work#and-hashes-too'
node --entry-url 'file.ts?query#hash'
node --entry-url 'data:text/javascript,console.log("Hello")' copy

--env-file-if-exists=file

Добавлено в: v22.9.0
Стабильность: 1.1 — Активная разработка

Работает так же, как --env-file, но ошибка не возникает, если файл не существует.

--env-file=file

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

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

v20.6.0

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

Стабильность: 1.1 — Активная разработка

Загружает переменные окружения из файла относительно текущего каталога и делает их доступными приложениям в 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

Чтобы загрузить переменные окружения из файла, который может отсутствовать, используйте флаг --env-file-if-exists.

-e, --eval "script"

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

Eval теперь поддерживает экспериментальное удаление типов.

v5.11.0

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

v0.5.2

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

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

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

Можно запускать код со встроенными типами, если не указан флаг --no-experimental-strip-types.

--experimental-addon-modules

Добавлено в: v22.20.0
Стабильность: 1.0 — Ранняя стадия разработки

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

--experimental-async-context-frame

Добавлено в: v22.7.0
Стабильность: 1 — Экспериментальный

Включает использование AsyncLocalStorage на основе AsyncContextFrame вместо реализации по умолчанию, которая использует async_hooks. Эта новая модель реализована совершенно иначе, поэтому способ передачи контекстных данных в приложении может отличаться. Перед использованием в production рекомендуется убедиться, что это изменение не влияет на работу приложения.

--experimental-config-file=config

Добавлено в: v22.16.0
Стабильность: 1.0 - Ранняя разработка

Если этот параметр указан, Node.js будет искать файл конфигурации по указанному пути. Node.js прочитает файл конфигурации и применит настройки. Файл конфигурации должен быть файлом JSON со следующей структурой:

[!NOTE] Замените vX.Y.Z в $schema версией Node.js, которую вы используете.

{
  "$schema": "https://nodejs.org/dist/vX.Y.Z/docs/node-config-schema.json",
  "nodeOptions": {
    "import": [
      "amaro/strip"
    ],
    "watch-path": "src",
    "watch-preserve-output": true
  }
} copy

В поле nodeOptions поддерживаются только флаги, допустимые в NODE_OPTIONS. Флаги, не выполняющие никаких действий, не поддерживаются. В настоящее время поддерживаются не все флаги V8.

Для проверки файла конфигурации можно использовать официальную схему JSON; она может отличаться в зависимости от версии Node.js. Каждый ключ в файле конфигурации соответствует флагу, который можно передать как аргумент командной строки. Значение ключа — это значение, которое было бы передано флагу.

Например, приведённый выше файл конфигурации эквивалентен следующим аргументам командной строки:

node --import amaro/strip --watch-path=src --watch-preserve-output copy

Приоритет настроек конфигурации следующий:

  1. NODE_OPTIONS и параметры командной строки
  2. Файл конфигурации
  3. NODE_OPTIONS из dotenv

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

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

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

Node.js не очищает и не проверяет конфигурацию, предоставленную пользователем, поэтому НИКОГДА не используйте ненадёжные файлы конфигурации.

--experimental-default-config-file

Добавлено в: v22.16.0
Стабильность: 1.0 - Ранняя разработка

Если указан флаг --experimental-default-config-file, Node.js будет искать файл node.config.json в текущем рабочем каталоге и загружать его как файл конфигурации.

--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, чтобы сохранить обратную совместимость.

Файлы без расширения будут считаться WebAssembly, если начинаются с магического числа WebAssembly (\0asm); в противном случае они будут считаться JavaScript-модулями ES.

--experimental-eventsource

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

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

--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-inspector-network-resource

Добавлено в: v22.19.0
Стабильность: 1.1 - Активная разработка

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

--experimental-loader=module

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

Для использования этой функции с включённой моделью разрешений требуется передать --allow-worker.

v12.11.1

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

v8.8.0

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

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

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

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

--experimental-network-inspection

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

Включает экспериментальную поддержку инспектирования сети с помощью Chrome DevTools.

--experimental-print-required-tla

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

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

--experimental-require-module

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

Теперь этот параметр включён по умолчанию.

v22.0.0

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

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

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

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

--experimental-sea-config

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

Используйте этот флаг для создания двоичного блока, который можно внедрить в исполняемый файл 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-isolation=mode

Добавлено в: v22.8.0
Стабильность: 1.0 - Ранняя разработка

Настраивает тип изоляции тестов, используемый средством запуска тестов. Если mode имеет значение 'process', каждый файл тестов запускается в отдельном дочернем процессе. Если mode имеет значение 'none', все файлы тестов запускаются в том же процессе, что и средство запуска тестов. По умолчанию используется режим изоляции 'process'. Этот флаг игнорируется, если флаг --test не указан. Дополнительные сведения см. в разделе модель выполнения средства запуска тестов.

--experimental-test-module-mocks

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

Для использования этой функции с включённой моделью разрешений требуется передать --allow-worker.

v22.3.0

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

Стабильность: 1.0 - Ранняя разработка

Включает подмену модулей в средстве запуска тестов.

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

--experimental-transform-types

Добавлено в: v22.7.0
Стабильность: 1.2 - Кандидат на выпуск

Включает преобразование синтаксиса, используемого только в TypeScript, в код JavaScript. Подразумевает --enable-source-maps.

--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-webstorage

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

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

--experimental-worker-inspection

Добавлено в: v22.17.0
Стабильность: 1.1 - Активная разработка

Включает экспериментальную поддержку инспектирования worker-потоков с помощью Chrome DevTools.

--expose-gc

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

Этот флаг предоставляет расширение gc из V8.

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

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

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

Флаги --heap-prof теперь стабильны.

v12.4.0

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

Запускает профилировщик кучи 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

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

Флаги --heap-prof теперь стабильны.

v12.4.0

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

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

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

--heap-prof-interval

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

Флаги --heap-prof теперь стабильны.

v12.4.0

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

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

--heap-prof-name

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

Флаги --heap-prof теперь стабильны.

v12.4.0

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

Указывает имя файла профиля кучи, созданного с помощью --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, так и нативной памяти за её пределами). Чем больше куча, тем больше ресурсов требуется. 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

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

Добавлена поддержка значений -typescript.

v22.7.0, v20.19.0

Обнаружение синтаксиса ESM включено по умолчанию.

v12.0.0

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

Настраивает Node.js на интерпретацию ввода --eval или STDIN как CommonJS или ES-модуля. Допустимые значения: "commonjs", "module", "module-typescript" и "commonjs-typescript". Значения "-typescript" недоступны с флагом --no-experimental-strip-types. По умолчанию значение не задано; если передан --no-experimental-detect-module, используется "commonjs".

Если --input-type не указан, Node.js попытается определить синтаксис, выполнив следующие действия:

  1. Запустить ввод как CommonJS.
  2. Если шаг 1 завершился ошибкой, запустить ввод как ES-модуль.
  3. Если шаг 2 завершился с SyntaxError, удалить типы.
  4. Если шаг 3 завершился ошибкой с кодом ERR_UNSUPPORTED_TYPESCRIPT_SYNTAX или ERR_INVALID_TYPESCRIPT_SYNTAX, выбросить ошибку из шага 2, включив ошибку TypeScript в сообщение; в противном случае запустить ввод как CommonJS.
  5. Если шаг 4 завершился ошибкой, запустить ввод как ES-модуль.

Чтобы избежать задержек из-за нескольких этапов определения синтаксиса, можно использовать флаг --input-type=type, чтобы указать способ интерпретации ввода --eval.

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-brk[=[host:]port]

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

Активирует инспектор на host:port и останавливает выполнение в начале пользовательского скрипта. Значение host:port по умолчанию — 127.0.0.1:9229. Если указан порт 0, будет использован случайный доступный порт.

Дополнительные сведения об отладчике Node.js см. в разделе Интеграция инспектора V8 с Node.js.

--inspect-port=[host:]port

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

Устанавливает host:port, используемый при активации инспектора. Полезно при активации инспектора отправкой сигнала SIGUSR1. Не действует, если передан --disable-sigusr1.

Хост по умолчанию — 127.0.0.1. Если указан порт 0, будет использован случайный доступный порт.

Сведения об использовании параметра 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. Если указан порт 0, будет использован случайный доступный порт.

Дополнительные сведения об отладчике Node.js см. в разделе Интеграция инспектора V8 с Node.js.

--inspect[=[host:]port]

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

Активирует инспектор на host:port. Значение по умолчанию — 127.0.0.1:9229. Если указан порт 0, будет использован случайный доступный порт.

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

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

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

Если вы указываете хост, убедитесь в одном из следующего:

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

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

Дополнительные сведения см. в разделе Последствия отладки для безопасности.

-i, --interactive

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

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

--jitless

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

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

--localstorage-file=file

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

Файл, используемый для хранения данных localStorage. Если файл не существует, он создаётся при первом обращении к localStorage. Один и тот же файл могут одновременно использовать несколько процессов Node.js. Этот флаг ничего не делает, если Node.js запущен без флага --experimental-webstorage.

--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-detect-module

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

Определение синтаксиса включено по умолчанию.

v21.1.0, v20.10.0

Добавлено в: v21.1.0, v20.10.0

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

--no-experimental-fetch

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

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

--no-experimental-global-customevent

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

Отключает предоставление веб-API CustomEvent в глобальной области видимости.

--no-experimental-global-navigator

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

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

--no-experimental-global-webcrypto

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

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

--no-experimental-repl-await

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

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

--no-experimental-require-module

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

Теперь по умолчанию имеет значение false.

v22.0.0

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

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

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

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

--no-experimental-sqlite

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

Флаг для SQLite больше не требуется, но функция всё ещё является экспериментальной.

v22.5.0

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

Отключает экспериментальный модуль node:sqlite.

--no-experimental-strip-types

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

Удаление типов включено по умолчанию.

v22.6.0

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

Стабильность: 1.2 - Кандидат на выпуск

Отключает экспериментальное удаление типов в файлах TypeScript. Дополнительные сведения см. в документации по удалению типов TypeScript.

--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 собран с OpenSSL, поддерживающим FIPS.

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

--permission

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

Модель разрешений стала стабильной.

v20.0.0

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

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

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

--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, но выводит результат.

--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-exclude-env

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

Если указан --report-exclude-env, созданный диагностический отчет не будет содержать данные environmentVariables.

--report-exclude-network

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

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

--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', отчет записывается соответственно в 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 вместе с нативным стеком и другими данными среды выполнения.

-r, --require module

История
Версия Изменения
v23.0.0, v22.12.0, v20.19.0

Этот параметр также поддерживает модули ECMAScript.

v1.6.0

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

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

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

Модули, предварительно загруженные с помощью --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

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

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

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

--run выполняет команду в каталоге, содержащем соответствующий package.json.

Например, следующая команда запустит сценарий 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: имя запускаемого сценария. Например, если для запуска test используется --run, значением этой переменной будет test.
  • NODE_RUN_PACKAGE_JSON_PATH: путь к обрабатываемому файлу package.json.

--secure-heap-min=n

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

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

--secure-heap=n

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

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

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

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

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

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

Дополнительные сведения см. в разделе CRYPTO_secure_malloc_init.

--snapshot-blob=path

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

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

При использовании без --build-snapshot параметр --snapshot-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

Максимальное количество файлов тестов, которые интерфейс командной строки средства запуска тестов будет выполнять одновременно. Если для --experimental-test-isolation задано значение 'none', этот флаг игнорируется, а степень параллелизма равна единице. В противном случае по умолчанию используется значение os.availableParallelism() - 1.

--test-coverage-branches=threshold

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

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

--test-coverage-exclude

Добавлено в: v22.5.0
Стабильность: 1 - Экспериментальный

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

Этот параметр можно указать несколько раз, чтобы исключить несколько шаблонов glob.

Если указаны оба параметра — --test-coverage-exclude и --test-coverage-include, — файлы должны соответствовать обоим критериям, чтобы попасть в отчет о покрытии.

--test-coverage-functions=threshold

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

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

--test-coverage-include

Добавлено в: v22.5.0
Стабильность: 1 - Экспериментальный

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

Этот параметр можно указать несколько раз, чтобы включить несколько шаблонов glob.

Если указаны оба параметра — --test-coverage-exclude и --test-coverage-include, — файлы должны соответствовать обоим критериям, чтобы попасть в отчет о покрытии.

--test-coverage-lines=threshold

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

Задает минимальный процент покрытия строк. Если покрытие кода не достигает указанного порога, процесс завершится с кодом 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.13.0

Тестирование снимков больше не является экспериментальной функцией.

v22.3.0

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

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

--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 — Устарело

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

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

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

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

  • Чтение переменных среды, выполняемое Node.js внутри системы.
  • Записи в формате process.env.KEY = "SOME VALUE".
  • Чтение в формате process.env.KEY.
  • Определения в формате Object.defineProperty(process.env, 'KEY', {...}).
  • Запросы в формате Object.hasOwn(process.env, 'KEY'), process.env.hasOwnProperty('KEY') или 'KEY' in process.env.
  • Удаления в формате delete process.env.KEY.
  • Перечисления в формате ...process.env или Object.keys(process.env).

Выводятся только имена переменных среды, к которым выполняется обращение. Значения не выводятся.

Чтобы вывести трассировку стека при обращении, используйте --trace-env-js-stack и/или --trace-env-native-stack.

--trace-env-js-stack

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

В дополнение к действиям --trace-env, этот параметр выводит трассировку стека JavaScript для обращения.

--trace-env-native-stack

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

В дополнение к действиям --trace-env, этот параметр выводит трассировку стека нативного кода для обращения.

--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-require-module=mode

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

Выводить сведения об использовании функции загрузки модулей ECMAScript с помощью require().

Если для mode задано значение all, выводятся все случаи использования. Если для mode задано значение no-node-modules, исключаются случаи использования из папки node_modules.

--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: если операционная система поддерживает эту возможность, будет предпринята попытка переназначения. Ошибка переназначения будет проигнорирована и не будет сообщена.

--use-system-ca

История
Версия Изменения
v23.9.0

Добавлена поддержка в операционных системах, отличных от Windows и macOS.

v23.8.0, v22.15.0

Добавлено в: v23.8.0, v22.15.0

Node.js использует доверенные сертификаты центров сертификации, имеющиеся в системном хранилище, вместе с параметром --use-bundled-ca и переменной среды NODE_EXTRA_CA_CERTS. На платформах, отличных от Windows и macOS, сертификаты загружаются из каталога и файла, которым доверяет OpenSSL, как и при использовании --use-openssl-ca, но после первой загрузки сертификаты кэшируются.

В Windows и macOS планируется использовать политику доверия к сертификатам, соответствующую политике Chromium для локально доверенных сертификатов:

В macOS учитываются следующие настройки:

  • Связки ключей «По умолчанию» и «Система»
    • Доверие:
      • любой сертификат, для которого флаг «При использовании этого сертификата» установлен в значение «Всегда доверять»; или
      • любой сертификат, для которого флаг «Уровень защищенных сокетов (SSL)» установлен в значение «Всегда доверять».
    • Недоверие:
      • любой сертификат, для которого флаг «При использовании этого сертификата» установлен в значение «Никогда не доверять»; или
      • любой сертификат, для которого флаг «Уровень защищенных сокетов (SSL)» установлен в значение «Никогда не доверять».

В Windows учитываются следующие настройки (в отличие от политики Chromium, запрет доверия и промежуточные центры сертификации в настоящее время не поддерживаются):

  • Локальный компьютер (доступ через certlm.msc)
    • Доверие:
      • Доверенные корневые центры сертификации
      • Доверенные лица
      • Корпоративное доверие -> Предприятие -> Доверенные корневые центры сертификации
      • Корпоративное доверие -> Предприятие -> Доверенные лица
      • Корпоративное доверие -> Групповая политика -> Доверенные корневые центры сертификации
      • Корпоративное доверие -> Групповая политика -> Доверенные лица
  • Текущий пользователь (доступ через certmgr.msc)
    • Доверие:
      • Доверенные корневые центры сертификации
      • Корпоративное доверие -> Групповая политика -> Доверенные корневые центры сертификации

В Windows и macOS Node.js проверяет, что настройки пользователя не запрещают использовать сертификаты для аутентификации TLS-сервера.

В других системах Node.js загружает сертификаты из файла сертификатов по умолчанию (обычно /etc/ssl/cert.pem) и каталога сертификатов по умолчанию (обычно /etc/ssl/certs), которые использует связанная с Node.js версия OpenSSL. Обычно это соответствует соглашениям, принятым в основных дистрибутивах Linux и других Unix-подобных системах. Если заданы переопределяющие переменные среды OpenSSL (обычно SSL_CERT_FILE и SSL_CERT_DIR, в зависимости от конфигурации связанной с Node.js версии OpenSSL), для загрузки сертификатов будут использоваться указанные пути. Эти переменные среды можно использовать в качестве обходного решения, если стандартные пути, используемые связанной с Node.js версией OpenSSL, по какой-либо причине не соответствуют конфигурации системы пользователя.

--v8-options

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

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

--v8-pool-size=num

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

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

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

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

-v, --version

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

Вывести версию Node.js.

--watch

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

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

v19.2.0, v18.13.0

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

v18.11.0, v16.19.0

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

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

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

Примечание: для флага --watch требуется указать путь к файлу в качестве аргумента; он несовместим с --run и вводом встроенного скрипта, поскольку --run имеет приоритет и отключает режим наблюдения. Если файл не указан, Node.js завершит работу с кодом состояния 9.

node --watch index.js copy

--watch-kill-signal

Добавлено в: v22.18.0
Стабильность: 1.1 — Активная разработка

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

node --watch --watch-kill-signal SIGINT test.js copy

--watch-path

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

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

v18.11.0, v16.19.0

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

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

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

Примечание: использование --watch-path неявно включает --watch, для которого требуется путь к файлу и который несовместим с --run, поскольку --run имеет приоритет и отключает режим наблюдения.

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

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

--watch-preserve-output

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

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

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

--zero-fill-buffers

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

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

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

Стабильность: 2 — Стабильный

FORCE_COLOR=[1, 2, 3]

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

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

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

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

NODE_COMPILE_CACHE=dir

Добавлено в: v22.1.0
Стабильность: 1.1 — В активной разработке

Включает кэш компиляции модулей для экземпляра Node.js. Подробности см. в документации по кэшу компиляции модулей.

NODE_DEBUG=module[,…]

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

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

NODE_DEBUG_NATIVE=module[,…]

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

NODE_DISABLE_COLORS=1

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

Если задано, цвета в REPL не используются.

NODE_DISABLE_COMPILE_CACHE=1

Добавлено в: v22.8.0
Стабильность: 1.1 — В активной разработке

Отключает кэш компиляции модулей для экземпляра Node.js. Подробности см. в документации по кэшу компиляции модулей.

NODE_EXTRA_CA_CERTS=file

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

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

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

Эта переменная среды игнорируется, если 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
  • --cpu-prof-dir
  • --cpu-prof-interval
  • --cpu-prof-name
  • --cpu-prof
  • --diagnostic-dir
  • --disable-proto
  • --disable-sigusr1
  • --disable-warning
  • --disable-wasm-trap-handler
  • --dns-result-order
  • --enable-fips
  • --enable-network-family-autoselection
  • --enable-source-maps
  • --entry-url
  • --experimental-abortcontroller
  • --experimental-addon-modules
  • --experimental-async-context-frame
  • --experimental-default-type
  • --experimental-detect-module
  • --experimental-eventsource
  • --experimental-import-meta-resolve
  • --experimental-json-modules
  • --experimental-loader
  • --experimental-modules
  • --experimental-permission
  • --experimental-print-required-tla
  • --experimental-require-module
  • --experimental-shadow-realm
  • --experimental-specifier-resolution
  • --experimental-top-level-await
  • --experimental-transform-types
  • --experimental-vm-modules
  • --experimental-wasi-unstable-preview1
  • --experimental-webstorage
  • --force-context-aware
  • --force-fips
  • --force-node-api-uncaught-exceptions-policy
  • --frozen-intrinsics
  • --heap-prof-dir
  • --heap-prof-interval
  • --heap-prof-name
  • --heap-prof
  • --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
  • --localstorage-file
  • --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-sqlite
  • --no-experimental-strip-types
  • --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
  • --permission
  • --preserve-symlinks-main
  • --preserve-symlinks
  • --prof-process
  • --redirect-warnings
  • --report-compact
  • --report-dir, --report-directory
  • --report-exclude-env
  • --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-coverage-branches
  • --test-coverage-exclude
  • --test-coverage-functions
  • --test-coverage-include
  • --test-coverage-lines
  • --test-name-pattern
  • --test-only
  • --test-reporter-destination
  • --test-reporter
  • --test-shard
  • --test-skip-pattern
  • --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-env-js-stack
  • --trace-env-native-stack
  • --trace-env
  • --trace-event-categories
  • --trace-event-file-pattern
  • --trace-events-enabled
  • --trace-exit
  • --trace-require-module
  • --trace-sigint
  • --trace-sync-io
  • --trace-tls
  • --trace-uncaught
  • --trace-warnings
  • --track-heap-objects
  • --unhandled-rejections
  • --use-bundled-ca
  • --use-largepages
  • --use-openssl-ca
  • --use-system-ca
  • --v8-pool-size
  • --watch-kill-signal
  • --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_USE_SYSTEM_CA=1

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

Node.js использует доверенные сертификаты центров сертификации из системного хранилища вместе с параметром --use-bundled-ca и переменной среды NODE_EXTRA_CA_CERTS.

Эту функцию также можно включить с помощью флага командной строки --use-system-ca. Если заданы оба параметра, приоритет имеет --use-system-ca.

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

NO_COLOR=<any>

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

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 или на платформах, отличных от macOS и Windows, включён --use-system-ca, эта переменная переопределяет и задаёт каталог OpenSSL с доверенными сертификатами.

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

SSL_CERT_FILE=file

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

Если включён --use-openssl-ca или на платформах, отличных от macOS и Windows, включён --use-system-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.

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

  • все API fs, кроме API наблюдения за файлами и тех, которые явно являются синхронными;
  • асинхронные API криптографии, такие как crypto.pbkdf2(), crypto.scrypt(), crypto.randomBytes(), crypto.randomFill(), crypto.generateKeyPair()
  • dns.lookup()
  • все API zlib, кроме тех, которые явно являются синхронными.

Поскольку размер пула потоков libuv фиксирован, если по какой-либо причине один из этих API выполняется долго, производительность других (на первый взгляд не связанных с ним) API, работающих в пуле потоков libuv, снизится. Один из способов смягчить эту проблему — увеличить размер пула потоков libuv, задав для переменной среды 'UV_THREADPOOL_SIZE' значение больше 4 (текущего значения по умолчанию). Однако установка этого значения изнутри процесса с помощью process.env.UV_THREADPOOL_SIZE=size не гарантирует результат, поскольку пул потоков создаётся при инициализации среды выполнения, задолго до запуска пользовательского кода. Подробнее см. в документации по пулу потоков libuv.

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

У V8 есть собственный набор параметров CLI. Любой параметр CLI 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

--interpreted-frames-native-stack

--jitless

--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 (в МиБ)

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

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

Значение по умолчанию зависит от ограничения памяти. Например, в 64-разрядных системах с ограничением памяти 512 МиБ максимальный размер полупространства по умолчанию равен 1 МиБ. Для ограничений памяти до 2 ГиБ включительно максимальный размер полупространства по умолчанию в 64-разрядных системах будет меньше 16 МиБ.

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

Например, выполните тест производительности в 64-разрядных системах:

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

--perf-basic-prof

--perf-basic-prof-only-functions

--perf-prof

--perf-prof-unwinding-info

--prof

--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/dist/latest-v22.x/docs/api/cli.html

Spec-Zone.ru

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