Интерфейс командной строки
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.
Параметры
Во всех параметрах, включая параметры V8, слова могут разделяться дефисами (-) или символами подчёркивания (_). Например, --pending-deprecation эквивалентно --pending_deprecation.
Если параметр, принимающий одно значение (например, --max-http-header-size), указан несколько раз, используется последнее переданное значение. Параметры командной строки имеют приоритет над параметрами, переданными через переменную окружения NODE_OPTIONS.
-
Псевдоним для stdin. Аналогично использованию - в других утилитах командной строки: скрипт считывается из stdin, а остальные параметры передаются этому скрипту.
--
Указывает конец параметров Node.js. Остальные аргументы передаются скрипту. Если до этого не указано имя файла скрипта или скрипт для eval/print, следующий аргумент используется как имя файла скрипта.
--abort-on-uncaught-exception
Прерывание вместо выхода приводит к созданию файла дампа памяти для последующего анализа с помощью отладчика (например, lldb, gdb и mdb).
Если передан этот флаг, поведение всё ещё можно настроить так, чтобы прерывание не выполнялось, с помощью process.setUncaughtExceptionCaptureCallback() (а также при использовании модуля node:domain, который его использует).
--allow-addons
При использовании модели разрешений процесс по умолчанию не сможет использовать нативные дополнения. Попытки сделать это вызовут 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
При использовании модели разрешений процесс по умолчанию не сможет создавать дочерние процессы. Попытки сделать это вызовут 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
Этот флаг настраивает разрешения на чтение файловой системы с помощью модели разрешений.
Допустимые аргументы флага --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
Этот флаг настраивает разрешения на запись в файловую систему с помощью модели разрешений.
Допустимые аргументы флага --allow-fs-write:
-
*— разрешить все операцииFileSystemWrite. - Можно разрешить несколько путей, используя несколько флагов
--allow-fs-write. Пример:--allow-fs-write=/folder1/ --allow-fs-write=/folder1/
Пути, разделённые запятыми (,), больше не разрешены. При передаче одного флага с запятой будет выведено предупреждение.
Примеры приведены в документации «Разрешения файловой системы».
--allow-wasi
При использовании модели разрешений процесс по умолчанию не сможет создавать экземпляры 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
При использовании модели разрешений процесс по умолчанию не сможет создавать потоки-воркеры. Из соображений безопасности вызов вызовет 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
При завершении процесса создаёт снимок и записывает его на диск; позднее его можно загрузить с помощью --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.
В настоящее время поддержка снимков времени выполнения является экспериментальной по следующим причинам:
- Пользовательские модули пока не поддерживаются в снимке, поэтому можно создать снимок только одного файла. Однако перед созданием снимка пользователи могут объединить приложения в один скрипт с помощью выбранного ими сборщика.
- В снимке работает только часть встроенных модулей, хотя набор тестов ядра Node.js проверяет возможность создания снимков для нескольких достаточно сложных приложений. Поддержка других модулей добавляется. Если при создании снимка происходят сбои или ошибки, отправьте сообщение об этом в систему отслеживания ошибок Node.js и добавьте ссылку на него в задачу по отслеживанию снимков пользовательских приложений.
--build-snapshot-config
Указывает путь к файлу конфигурации JSON, который задаёт поведение при создании снимка.
В настоящее время поддерживаются следующие параметры:
-
builder<string> Обязательный. Задаёт имя скрипта, который выполняется перед созданием снимка, как если бы флаг--build-snapshotбыл передан вместе сbuilderв качестве имени основного скрипта. -
withoutCodeCache<boolean> Необязательный. Включение кэша кода сокращает время компиляции функций, включённых в снимок, но увеличивает размер снимка и может нарушить его переносимость.
При использовании этого флага дополнительные файлы скриптов, указанные в командной строке, не будут выполняться, а будут интерпретироваться как обычные аргументы командной строки.
-c, --check
Проверяет синтаксис скрипта, не выполняя его.
--completion-bash
Выводит скрипт автодополнения bash для Node.js, который можно подключить к оболочке.
node --completion-bash > node_bash_completion source node_bash_completion copy
-C condition, --conditions=condition
Задаёт пользовательские условия разрешения для условного экспорта.
Можно указать любое количество пользовательских строковых имён условий.
Стандартные условия Node.js "node", "default", "import" и "require" всегда применяются согласно заданным правилам.
Например, чтобы запустить модуль с разрешением "development":
node -C development app.js copy
--cpu-prof
При запуске включает профилировщик ЦП 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
Задаёт каталог, в который будут помещаться профили ЦП, созданные с помощью --cpu-prof.
Значение по умолчанию задаётся параметром командной строки --diagnostic-dir.
--cpu-prof-interval
Задаёт интервал выборки в микросекундах для профилей ЦП, созданных с помощью --cpu-prof. Значение по умолчанию — 1000 микросекунд.
--cpu-prof-name
Задаёт имя файла профиля ЦП, созданного с помощью --cpu-prof.
--diagnostic-dir=directory
Задаёт каталог, в который записываются все диагностические файлы. По умолчанию используется текущий рабочий каталог.
Влияет на каталог вывода по умолчанию для следующих параметров:
--disable-proto=mode
Отключает свойство Object.prototype.__proto__. Если mode равно delete, свойство удаляется полностью. Если mode равно throw, обращение к свойству вызывает исключение с кодом ERR_PROTO_ACCESS.
--disable-sigusr1
Отключает возможность начать сеанс отладки, отправив процессу сигнал SIGUSR1.
--disable-warning=code-or-type
Отключает определённые предупреждения процесса по 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
По умолчанию 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
Заставляет встроенные языковые средства, такие как eval и new Function, генерирующие код из строк, вместо этого вызывать исключение. Это не влияет на модуль Node.js node:vm.
--dns-result-order=order
Задаёт значение по умолчанию для order в dns.lookup() и dnsPromises.lookup(). Возможные значения:
-
ipv4first: задаёт значение по умолчаниюorderравнымipv4first. -
ipv6first: задаёт значение по умолчаниюorderравнымipv6first. -
verbatim: задаёт значение по умолчаниюorderравнымverbatim.
Значение по умолчанию — verbatim, а dns.setDefaultResultOrder() имеет более высокий приоритет, чем --dns-result-order.
--enable-fips
Включает при запуске криптографию, соответствующую требованиям FIPS. (Для этого Node.js должен быть собран с OpenSSL, совместимым с FIPS.)
--enable-network-family-autoselection
Включает алгоритм автоматического выбора семейства адресов, если параметры соединения явно не отключают его.
--enable-source-maps
Включает поддержку карт исходного кода для трассировок стека.
При использовании транспилятора, например 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
Если этот параметр указан, 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
Работает так же, как --env-file, но ошибка не возникает, если файл не существует.
--env-file=file
Загружает переменные окружения из файла относительно текущего каталога и делает их доступными приложениям в 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"
Выполняет следующий аргумент как JavaScript. В script также можно использовать модули, предопределённые в REPL.
В Windows при использовании cmd.exe одинарные кавычки работают некорректно, поскольку для заключения в кавычки распознаются только двойные ". В Powershell или Git bash можно использовать и ', и ".
Можно запускать код со встроенными типами, если не указан флаг --no-experimental-strip-types.
--experimental-addon-modules
Включает экспериментальную поддержку импорта дополнений .node.
--experimental-async-context-frame
Включает использование AsyncLocalStorage на основе AsyncContextFrame вместо реализации по умолчанию, которая использует async_hooks. Эта новая модель реализована совершенно иначе, поэтому способ передачи контекстных данных в приложении может отличаться. Перед использованием в production рекомендуется убедиться, что это изменение не влияет на работу приложения.
--experimental-config-file=config
Если этот параметр указан, 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
Приоритет настроек конфигурации следующий:
- NODE_OPTIONS и параметры командной строки
- Файл конфигурации
- NODE_OPTIONS из dotenv
Значения из файла конфигурации не переопределяют значения переменных среды и параметров командной строки, но переопределяют значения в файле среды NODE_OPTIONS, разобранном с помощью флага --env-file.
Если в файле конфигурации присутствуют повторяющиеся ключи, будет использован только первый.
Анализатор конфигурации выдаст ошибку, если файл конфигурации содержит неизвестные ключи или ключи, которые нельзя использовать в NODE_OPTIONS.
Node.js не очищает и не проверяет конфигурацию, предоставленную пользователем, поэтому НИКОГДА не используйте ненадёжные файлы конфигурации.
--experimental-default-config-file
Если указан флаг --experimental-default-config-file, Node.js будет искать файл node.config.json в текущем рабочем каталоге и загружать его как файл конфигурации.
--experimental-default-type=type
Определяет, какую систему модулей — 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
Включает предоставление Web API EventSource в глобальной области видимости.
--experimental-import-meta-resolve
Включает экспериментальную поддержку родительского URL для import.meta.resolve(), позволяющую передавать второй аргумент parentURL для контекстного разрешения.
Ранее этот флаг включал всю функциональность import.meta.resolve.
--experimental-inspector-network-resource
Включает экспериментальную поддержку сетевых ресурсов инспектора.
--experimental-loader=module
Использование этого флага не рекомендуется; в будущей версии Node.js он может быть удалён. Вместо него используйте
--importсregister().
Указывает module, содержащий экспортируемые хуки настройки модулей. module может быть любой строкой, допустимой в качестве спецификатора import.
Для использования этой функции с моделью разрешений требуется --allow-worker.
--experimental-network-inspection
Включает экспериментальную поддержку инспектирования сети с помощью Chrome DevTools.
--experimental-print-required-tla
Если загружаемый ES-модуль содержит require() верхнеуровневые await, этот флаг позволяет Node.js выполнить модуль, попытаться найти верхнеуровневые await и вывести их расположение, чтобы помочь пользователям обнаружить их.
--experimental-require-module
Поддерживает загрузку синхронного графа ES-модулей в require().
См. раздел Загрузка модулей ECMAScript с помощью require().
--experimental-sea-config
Используйте этот флаг для создания двоичного блока, который можно внедрить в исполняемый файл Node.js, чтобы создать автономное исполняемое приложение. Подробности см. в документации о этой конфигурации.
--experimental-shadow-realm
Используйте этот флаг, чтобы включить поддержку ShadowRealm.
--experimental-test-coverage
При использовании вместе с модулем node:test отчёт о покрытии кода формируется как часть вывода средства запуска тестов. Если тесты не запускаются, отчёт о покрытии не формируется. Подробнее см. документацию о сборе данных о покрытии кода тестами.
--experimental-test-isolation=mode
Настраивает тип изоляции тестов, используемый средством запуска тестов. Если mode имеет значение 'process', каждый файл тестов запускается в отдельном дочернем процессе. Если mode имеет значение 'none', все файлы тестов запускаются в том же процессе, что и средство запуска тестов. По умолчанию используется режим изоляции 'process'. Этот флаг игнорируется, если флаг --test не указан. Дополнительные сведения см. в разделе модель выполнения средства запуска тестов.
--experimental-test-module-mocks
Включает подмену модулей в средстве запуска тестов.
Для использования этой функции с моделью разрешений требуется --allow-worker.
--experimental-transform-types
Включает преобразование синтаксиса, используемого только в TypeScript, в код JavaScript. Подразумевает --enable-source-maps.
--experimental-vm-modules
Включает экспериментальную поддержку ES-модулей в модуле node:vm.
--experimental-wasi-unstable-preview1
Включает экспериментальную поддержку WebAssembly System Interface (WASI).
--experimental-webstorage
Включает экспериментальную поддержку Web Storage.
--experimental-worker-inspection
Включает экспериментальную поддержку инспектирования worker-потоков с помощью Chrome DevTools.
--expose-gc
Этот флаг предоставляет расширение gc из V8.
if (globalThis.gc) {
globalThis.gc();
} copy
--force-context-aware
Отключает загрузку нативных дополнений, не поддерживающих контекстную осведомлённость.
--force-fips
Принудительно включает криптографию, соответствующую FIPS, при запуске. (Нельзя отключить из кода скрипта.) (Те же требования, что и для --enable-fips.)
--force-node-api-uncaught-exceptions-policy
Принудительно вызывает событие uncaughtException для асинхронных обратных вызовов Node-API.
Чтобы существующее дополнение не вызывало аварийное завершение процесса, этот флаг по умолчанию отключён. В будущем он будет включён по умолчанию, чтобы обеспечить правильное поведение.
--frozen-intrinsics
Включает экспериментальную заморозку встроенных объектов, таких как Array и Object.
Поддерживается только корневой контекст. Нет гарантии, что globalThis.Array действительно является ссылкой на встроенный объект по умолчанию. При использовании этого флага код может перестать работать.
Чтобы разрешить добавление полифилов, --require и --import выполняются до заморозки встроенных объектов.
--heap-prof
Запускает профилировщик кучи 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
Указывает каталог, в который будут помещаться профили кучи, созданные с помощью --heap-prof.
Значение по умолчанию определяется параметром командной строки --diagnostic-dir.
--heap-prof-interval
Указывает средний интервал выборки в байтах для профилей кучи, созданных с помощью --heap-prof. Значение по умолчанию — 512 * 1024 байта.
--heap-prof-name
Указывает имя файла профиля кучи, созданного с помощью --heap-prof.
--heapsnapshot-near-heap-limit=max_count
Записывает снимок кучи 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
Включает обработчик сигнала, который заставляет процесс 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
Выводит параметры командной строки node. Вывод этой команды содержит меньше подробностей, чем данный документ.
--icu-data-dir=file
Указывает путь загрузки данных ICU. (Переопределяет NODE_ICU_DATA.)
--import=module
Предварительно загружает указанный модуль при запуске. Если флаг указан несколько раз, каждый модуль будет выполнен последовательно в порядке их появления, начиная с модулей, указанных в NODE_OPTIONS.
Следует правилам разрешения модулей ECMAScript. Используйте --require для загрузки модуля CommonJS. Модули, предварительно загруженные с помощью --require, выполняются перед модулями, предварительно загруженными с помощью --import.
Модули предварительно загружаются в основной поток, а также во все рабочие потоки, разветвлённые и кластеризованные процессы.
--input-type=type
Настраивает 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 попытается определить синтаксис, выполнив следующие действия:
- Запустить ввод как CommonJS.
- Если шаг 1 завершился ошибкой, запустить ввод как ES-модуль.
- Если шаг 2 завершился с SyntaxError, удалить типы.
- Если шаг 3 завершился ошибкой с кодом
ERR_UNSUPPORTED_TYPESCRIPT_SYNTAXилиERR_INVALID_TYPESCRIPT_SYNTAX, выбросить ошибку из шага 2, включив ошибку TypeScript в сообщение; в противном случае запустить ввод как CommonJS. - Если шаг 4 завершился ошибкой, запустить ввод как ES-модуль.
Чтобы избежать задержек из-за нескольких этапов определения синтаксиса, можно использовать флаг --input-type=type, чтобы указать способ интерпретации ввода --eval.
REPL не поддерживает этот параметр. Использование --input-type=module с --print приведёт к ошибке, поскольку --print не поддерживает синтаксис ES-модулей.
--insecure-http-parser
Включает флаги ослабления проверок в анализаторе HTTP. Это может обеспечить взаимодействие с реализациями HTTP, не соответствующими стандартам.
Включённый анализатор будет принимать:
- Недопустимые значения заголовков HTTP.
- Недопустимые версии HTTP.
- Сообщения, содержащие одновременно заголовки
Transfer-EncodingиContent-Length. - Дополнительные данные после сообщения, если присутствует
Connection: close. - Дополнительные кодировки передачи после указания
chunked. - Использование
\nв качестве разделителя токенов вместо\r\n. - Отсутствие
\r\nпосле фрагмента. - Пробелы после размера фрагмента и перед
\r\n.
Все перечисленные выше случаи подвергают приложение риску атак с подменой или отравлением запросов. Не используйте этот параметр.
--inspect-brk[=[host:]port]
Активирует инспектор на host:port и останавливает выполнение в начале пользовательского скрипта. Значение host:port по умолчанию — 127.0.0.1:9229. Если указан порт 0, будет использован случайный доступный порт.
Дополнительные сведения об отладчике Node.js см. в разделе Интеграция инспектора V8 с Node.js.
--inspect-port=[host:]port
Устанавливает 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]
Активирует инспектор на host:port и ожидает подключения отладчика. Значение host:port по умолчанию — 127.0.0.1:9229. Если указан порт 0, будет использован случайный доступный порт.
Дополнительные сведения об отладчике Node.js см. в разделе Интеграция инспектора V8 с Node.js.
--inspect[=[host:]port]
Активирует инспектор на 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
Открывает REPL, даже если stdin не распознаётся как терминал.
--jitless
Отключает выделение исполняемой памяти во время выполнения. На некоторых платформах это может требоваться по соображениям безопасности. На других платформах это также может уменьшить поверхность атаки, но производительность может значительно снизиться.
--localstorage-file=file
Файл, используемый для хранения данных localStorage. Если файл не существует, он создаётся при первом обращении к localStorage. Один и тот же файл могут одновременно использовать несколько процессов Node.js. Этот флаг ничего не делает, если Node.js запущен без флага --experimental-webstorage.
--max-http-header-size=size
Указывает максимальный размер HTTP-заголовков в байтах. Значение по умолчанию — 16 КиБ.
--napi-modules
Этот параметр ничего не делает. Он сохранён для совместимости.
--network-family-autoselection-attempt-timeout
Задает значение по умолчанию для времени ожидания попытки автоматического выбора семейства сети. Дополнительные сведения см. в разделе net.getDefaultAutoSelectFamilyAttemptTimeout().
--no-addons
Отключает условие экспорта node-addons, а также загрузку нативных дополнений. Если указан --no-addons, вызов process.dlopen или подключение нативного дополнения C++ завершится ошибкой и вызовет исключение.
--no-deprecation
Отключает предупреждения об устаревании.
--no-experimental-detect-module
Отключает использование определения синтаксиса для определения типа модуля.
--no-experimental-fetch
Отключает предоставление Fetch API в глобальной области видимости.
--no-experimental-global-customevent
Отключает предоставление веб-API CustomEvent в глобальной области видимости.
--no-experimental-global-navigator
Отключает предоставление Navigator API в глобальной области видимости.
--no-experimental-global-webcrypto
Отключает предоставление Web Crypto API в глобальной области видимости.
--no-experimental-repl-await
Используйте этот флаг, чтобы отключить await верхнего уровня в REPL.
--no-experimental-require-module
Отключает поддержку загрузки синхронного графа модулей ES в require().
См. раздел Загрузка модулей ECMAScript с помощью require().
--no-experimental-sqlite
Отключает экспериментальный модуль node:sqlite.
--no-experimental-strip-types
Отключает экспериментальное удаление типов в файлах TypeScript. Дополнительные сведения см. в документации по удалению типов TypeScript.
--no-experimental-websocket
Отключает предоставление <WebSocket> в глобальной области видимости.
--no-extra-info-on-fatal-exception
Скрывает дополнительную информацию о фатальном исключении, приводящем к завершению процесса.
--no-force-async-hooks-checks
Отключает проверки времени выполнения для async_hooks. Они по-прежнему будут включаться динамически, если включен async_hooks.
--no-global-search-paths
Не выполняет поиск модулей в глобальных путях, таких как $HOME/.node_modules и $NODE_PATH.
--no-network-family-autoselection
Отключает алгоритм автоматического выбора семейства, если он явно не включен в параметрах подключения.
--no-warnings
Отключает все предупреждения процесса (включая предупреждения об устаревании).
--node-memory-debug
Включает дополнительные отладочные проверки на утечки памяти во внутренних компонентах Node.js. Обычно это полезно только разработчикам, отлаживающим сам Node.js.
--openssl-config=file
Загружает файл конфигурации OpenSSL при запуске. Помимо прочего, это можно использовать для включения криптографии, соответствующей требованиям FIPS, если Node.js собран с OpenSSL, поддерживающим FIPS.
--openssl-legacy-provider
Включает устаревший провайдер OpenSSL 3.0. Дополнительные сведения см. в разделе OSSL_PROVIDER-legacy.
--openssl-shared-config
Включает раздел конфигурации OpenSSL по умолчанию, openssl_conf, который считывается из файла конфигурации OpenSSL. Файл конфигурации по умолчанию называется openssl.cnf, но это имя можно изменить с помощью переменной среды OPENSSL_CONF или параметра командной строки --openssl-config. Расположение файла конфигурации OpenSSL по умолчанию зависит от способа связывания OpenSSL с Node.js. Совместное использование конфигурации OpenSSL может иметь нежелательные последствия, поэтому рекомендуется использовать отдельный для Node.js раздел конфигурации nodejs_conf, который применяется по умолчанию, если этот параметр не используется.
--pending-deprecation
Выводит ожидающие предупреждения об устаревании.
Ожидающие предупреждения об устаревании обычно ничем не отличаются от предупреждений об устаревании во время выполнения, за исключением того, что по умолчанию они отключены и выводятся только в том случае, если задан флаг командной строки --pending-deprecation или переменная среды NODE_PENDING_DEPRECATION=1. Ожидающие предупреждения об устаревании служат своего рода механизмом выборочного «раннего предупреждения», который разработчики могут использовать для обнаружения применения устаревших API.
--permission
Включает модель разрешений для текущего процесса. При включении ограничиваются следующие разрешения:
- Файловая система — управление с помощью флагов
--allow-fs-read,--allow-fs-write - Дочерние процессы — управление с помощью флага
--allow-child-process - Рабочие потоки — управление с помощью флага
--allow-worker - WASI — управление с помощью флага
--allow-wasi - Дополнения — управление с помощью флага
--allow-addons
--preserve-symlinks
Указывает загрузчику модулей сохранять символические ссылки при разрешении модулей и их кэшировании.
По умолчанию, когда 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
Указывает загрузчику модулей сохранять символические ссылки при разрешении главного модуля и его кэшировании (require.main).
Этот флаг позволяет включить для главного модуля то же поведение, которое --preserve-symlinks задает для всех остальных импортов; однако для обеспечения обратной совместимости со старыми версиями Node.js это отдельные флаги.
--preserve-symlinks-main не подразумевает --preserve-symlinks; используйте --preserve-symlinks-main вместе с --preserve-symlinks, если не нужно следовать символическим ссылкам перед разрешением относительных путей.
Дополнительные сведения см. в разделе --preserve-symlinks.
-p, --print "script"
Аналогичен -e, но выводит результат.
--prof
Создает выходные данные профилировщика V8.
--prof-process
Обрабатывает выходные данные профилировщика V8, созданные с помощью параметра V8 --prof.
--redirect-warnings=file
Записывает предупреждения процесса в указанный файл вместо вывода в stderr. Если файл не существует, он будет создан; если существует — данные будут добавлены в конец. Если при записи предупреждения в файл произойдет ошибка, предупреждение будет выведено в stderr.
Имя file может быть абсолютным путем. Если это не так, каталог по умолчанию, в который будет выполнена запись, задается параметром командной строки --diagnostic-dir.
--report-compact
Записывает отчеты в компактном формате — в виде однострочного JSON, который системам обработки журналов удобнее использовать, чем многострочный формат по умолчанию, предназначенный для чтения человеком.
--report-dir=directory, report-directory=directory
Расположение, в котором будет создан отчет.
--report-exclude-env
Если указан --report-exclude-env, созданный диагностический отчет не будет содержать данные environmentVariables.
--report-exclude-network
Исключает header.networkInterfaces из диагностического отчета. По умолчанию этот параметр не задан, поэтому сетевые интерфейсы включаются в отчет.
--report-filename=filename
Имя файла, в который будет записан отчет.
Если для имени файла задано значение 'stdout' или 'stderr', отчет записывается соответственно в stdout или stderr процесса.
--report-on-fatalerror
Позволяет создавать отчет при фатальных ошибках (внутренних ошибках среды выполнения Node.js, например нехватке памяти), приводящих к завершению приложения. Отчет полезен для анализа различных диагностических данных, таких как куча, стек, состояние цикла событий, потребление ресурсов и т. д., и выяснения причин фатальной ошибки.
--report-on-signal
Позволяет создавать отчет при получении указанного (или предопределенного) сигнала работающим процессом Node.js. Сигнал для создания отчета задается с помощью --report-signal.
--report-signal=signal
Задает или сбрасывает сигнал для создания отчета (не поддерживается в Windows). Сигнал по умолчанию — SIGUSR2.
--report-uncaught-exception
Позволяет создавать отчет при завершении процесса из-за необработанного исключения. Полезен при анализе стека JavaScript вместе с нативным стеком и другими данными среды выполнения.
-r, --require module
Предварительно загружает указанный модуль при запуске.
Следует правилам разрешения модулей require(). module может быть путем к файлу или именем модуля Node.js.
Модули, предварительно загруженные с помощью --require, запускаются раньше модулей, загруженных с помощью --import.
Модули предварительно загружаются в главный поток, а также в любые рабочие потоки, разветвленные или кластеризованные процессы.
--run
Запускает указанную команду из объекта "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
При использовании --secure-heap флаг --secure-heap-min задает минимальный размер выделения из защищенной кучи. Минимальное значение — 2. Максимальное значение — меньшее из --secure-heap и 2147483647. Указанное значение должно быть степенью двойки.
--secure-heap=n
Инициализирует защищенную кучу OpenSSL размером n байт. После инициализации защищенная куча используется для выделения памяти определенных типов в OpenSSL при создании ключей и выполнении других операций. Это полезно, например, для предотвращения утечки конфиденциальной информации из-за выхода указателя за границы выделенного участка памяти.
Размер защищенной кучи фиксирован и не может быть изменен во время выполнения, поэтому при ее использовании важно выбрать размер, достаточный для всех потребностей приложения.
Размер кучи должен быть степенью двойки. Любое значение меньше 2 отключает защищенную кучу.
По умолчанию защищенная куча отключена.
Защищенная куча недоступна в Windows.
Дополнительные сведения см. в разделе CRYPTO_secure_malloc_init.
--snapshot-blob=path
При использовании с --build-snapshot параметр --snapshot-blob задает путь, по которому сохраняется созданный двоичный файл снимка. Если путь не указан, созданный файл записывается в snapshot.blob в текущем рабочем каталоге.
При использовании без --build-snapshot параметр --snapshot-blob задает путь к файлу, который используется для восстановления состояния приложения.
При загрузке снимка Node.js проверяет, что:
- Версия, архитектура и платформа работающего двоичного файла Node.js точно совпадают с версией, архитектурой и платформой двоичного файла, создавшего снимок.
- Флаги V8 и возможности ЦП совместимы с флагами и возможностями двоичного файла, создавшего снимок.
Если они не совпадают, Node.js отказывается загружать снимок и завершает работу с кодом состояния 1.
--test
Запускает средство тестирования командной строки Node.js. Этот флаг нельзя использовать вместе с --watch-path, --check, --eval, --interactive или инспектором. Дополнительные сведения см. в документации о запуске тестов из командной строки.
--test-concurrency
Максимальное количество файлов тестов, которые интерфейс командной строки средства запуска тестов будет выполнять одновременно. Если для --experimental-test-isolation задано значение 'none', этот флаг игнорируется, а степень параллелизма равна единице. В противном случае по умолчанию используется значение os.availableParallelism() - 1.
--test-coverage-branches=threshold
Задает минимальный процент покрытия ветвей. Если покрытие кода не достигает указанного порога, процесс завершится с кодом 1.
--test-coverage-exclude
Исключает определенные файлы из покрытия кода с помощью шаблона glob, который может соответствовать как абсолютным, так и относительным путям к файлам.
Этот параметр можно указать несколько раз, чтобы исключить несколько шаблонов glob.
Если указаны оба параметра — --test-coverage-exclude и --test-coverage-include, — файлы должны соответствовать обоим критериям, чтобы попасть в отчет о покрытии.
--test-coverage-functions=threshold
Задает минимальный процент покрытия функций. Если покрытие кода не достигает указанного порога, процесс завершится с кодом 1.
--test-coverage-include
Включает определенные файлы в покрытие кода с помощью шаблона glob, который может соответствовать как абсолютным, так и относительным путям к файлам.
Этот параметр можно указать несколько раз, чтобы включить несколько шаблонов glob.
Если указаны оба параметра — --test-coverage-exclude и --test-coverage-include, — файлы должны соответствовать обоим критериям, чтобы попасть в отчет о покрытии.
--test-coverage-lines=threshold
Задает минимальный процент покрытия строк. Если покрытие кода не достигает указанного порога, процесс завершится с кодом 1.
--test-force-exit
Настраивает средство запуска тестов на завершение процесса после выполнения всех известных тестов, даже если цикл событий в противном случае оставался бы активным.
--test-name-pattern
Регулярное выражение, настраивающее средство запуска тестов так, чтобы выполнялись только тесты, имена которых соответствуют заданному шаблону. Дополнительные сведения см. в документации о фильтрации тестов по имени.
Если указаны оба параметра — --test-name-pattern и --test-skip-pattern, — для выполнения тесты должны соответствовать обоим требованиям.
--test-only
Настраивает средство запуска тестов так, чтобы оно выполняло только тесты верхнего уровня, для которых задан параметр only. Этот флаг не требуется, если изоляция тестов отключена.
--test-reporter
Средство формирования отчетов о тестах, которое будет использоваться при запуске тестов. Подробнее см. в документации о средствах формирования отчетов о тестах.
--test-reporter-destination
Место назначения для соответствующего средства формирования отчетов о тестах. Подробнее см. в документации о средствах формирования отчетов о тестах.
--test-shard
Фрагмент набора тестов для выполнения в формате <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
Регулярное выражение, которое настраивает средство запуска тестов на пропуск тестов, имена которых соответствуют заданному шаблону. Подробнее см. в документации о фильтрации тестов по имени.
Если указаны оба параметра, --test-name-pattern и --test-skip-pattern, тесты должны удовлетворять обоим требованиям, чтобы быть выполненными.
--test-timeout
Количество миллисекунд, по истечении которого выполнение теста завершится с ошибкой. Если значение не задано, вложенные тесты наследуют его от родительского. Значение по умолчанию — Infinity.
--test-update-snapshots
Повторно создает файлы снимков, используемые средством запуска тестов для тестирования снимков.
--throw-deprecation
Выбрасывать ошибки при использовании устаревших функций.
--title=title
Задать process.title при запуске.
--tls-cipher-list=list
Указать альтернативный список шифров TLS по умолчанию. Требуется, чтобы Node.js был собран с поддержкой криптографии (включена по умолчанию).
--tls-keylog=file
Записывать ключевой материал TLS в файл. Ключевой материал имеет формат NSS SSLKEYLOGFILE и может использоваться программным обеспечением (например, Wireshark) для расшифровки трафика TLS.
--tls-max-v1.2
Установить tls.DEFAULT_MAX_VERSION в значение 'TLSv1.2'. Используйте этот параметр, чтобы отключить поддержку TLSv1.3.
--tls-max-v1.3
Установить значение по умолчанию для tls.DEFAULT_MAX_VERSION в 'TLSv1.3'. Используйте этот параметр, чтобы включить поддержку TLSv1.3.
--tls-min-v1.0
Установить значение по умолчанию для tls.DEFAULT_MIN_VERSION в 'TLSv1'. Используйте этот параметр для совместимости со старыми клиентами или серверами TLS.
--tls-min-v1.1
Установить значение по умолчанию для tls.DEFAULT_MIN_VERSION в 'TLSv1.1'. Используйте этот параметр для совместимости со старыми клиентами или серверами TLS.
--tls-min-v1.2
Установить значение по умолчанию для tls.DEFAULT_MIN_VERSION в 'TLSv1.2'. Это значение используется по умолчанию в версиях 12.x и новее, но параметр поддерживается для совместимости с более старыми версиями Node.js.
--tls-min-v1.3
Установить значение по умолчанию для tls.DEFAULT_MIN_VERSION в 'TLSv1.3'. Используйте этот параметр, чтобы отключить поддержку TLSv1.2, который менее безопасен, чем TLSv1.3.
--trace-atomics-wait
Выводить в stderr краткие сводки вызовов Atomics.wait(). Вывод может выглядеть так:
(node:15701) [Thread 0] Atomics.wait(<address> + 0, 1, inf) started (node:15701) [Thread 0] Atomics.wait(<address> + 0, 1, inf) did not wait because the values mismatched (node:15701) [Thread 0] Atomics.wait(<address> + 0, 0, 10) started (node:15701) [Thread 0] Atomics.wait(<address> + 0, 0, 10) timed out (node:15701) [Thread 0] Atomics.wait(<address> + 4, 0, inf) started (node:15701) [Thread 1] Atomics.wait(<address> + 4, -1, inf) started (node:15701) [Thread 0] Atomics.wait(<address> + 4, 0, inf) was woken up by another thread (node:15701) [Thread 1] Atomics.wait(<address> + 4, -1, inf) was woken up by another thread copy
Эти поля соответствуют следующим значениям:
- Идентификатор потока, указанный в
worker_threads.threadId - Базовый адрес соответствующего
SharedArrayBuffer, а также смещение в байтах, соответствующее индексу, переданному вAtomics.wait() - Ожидаемое значение, переданное в
Atomics.wait() - Тайм-аут, переданный в
Atomics.wait
--trace-deprecation
Выводить трассировки стека для устаревших функций.
--trace-env
Выводить в 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
В дополнение к действиям --trace-env, этот параметр выводит трассировку стека JavaScript для обращения.
--trace-env-native-stack
В дополнение к действиям --trace-env, этот параметр выводит трассировку стека нативного кода для обращения.
--trace-event-categories
Список категорий, разделенный запятыми, для которых следует выполнять трассировку при включенной трассировке событий с помощью --trace-events-enabled.
--trace-event-file-pattern
Строковый шаблон, задающий путь к файлу с данными трассировки событий; поддерживаются ${rotation} и ${pid}.
--trace-events-enabled
Включает сбор данных трассировки событий.
--trace-exit
Выводить трассировку стека при принудительном завершении среды, например при вызове process.exit().
--trace-require-module=mode
Выводить сведения об использовании функции загрузки модулей ECMAScript с помощью require().
Если для mode задано значение all, выводятся все случаи использования. Если для mode задано значение no-node-modules, исключаются случаи использования из папки node_modules.
--trace-sigint
Выводить трассировку стека при получении SIGINT.
--trace-sync-io
Выводить трассировку стека при обнаружении синхронного ввода-вывода после первого прохода цикла событий.
--trace-tls
Выводить сведения о трассировке пакетов TLS в stderr. Это можно использовать для отладки проблем с TLS-соединением.
--trace-uncaught
Выводить трассировки стека для необработанных исключений; обычно выводится трассировка стека, связанная с созданием Error, тогда как этот параметр заставляет Node.js также выводить трассировку стека, связанную с выбрасыванием значения (которое не обязательно должно быть экземпляром Error).
Включение этого параметра может негативно повлиять на поведение сборщика мусора.
--trace-warnings
Выводить трассировки стека для предупреждений процесса (включая сообщения об устаревших функциях).
--track-heap-objects
Отслеживать выделение объектов в куче для создания снимков кучи.
--unhandled-rejections=mode
Этот флаг позволяет изменить поведение при возникновении необработанного отклонения промиса. Можно выбрать один из следующих режимов:
-
throw: генерировать событиеunhandledRejection. Если этот обработчик не задан, вызвать необработанное отклонение как необработанное исключение. Это режим по умолчанию. -
strict: вызвать необработанное отклонение как необработанное исключение. Если исключение обработано, генерируется событиеunhandledRejection. -
warn: всегда инициировать предупреждение, независимо от того, задан ли обработчикunhandledRejection, но не выводить предупреждение об устаревании. -
warn-with-error-code: генерировать событиеunhandledRejection. Если этот обработчик не задан, инициировать предупреждение и установить код завершения процесса в 1. -
none: отключить все предупреждения.
Если отклонение происходит на этапе статической загрузки модулей ES в точке входа командной строки, оно всегда будет вызвано как необработанное исключение.
--use-bundled-ca, --use-openssl-ca
Использовать встроенное хранилище центров сертификации Mozilla, поставляемое с текущей версией Node.js, либо хранилище центров сертификации OpenSSL по умолчанию. Хранилище по умолчанию можно выбрать во время сборки.
Встроенное хранилище центров сертификации, поставляемое с Node.js, представляет собой снимок хранилища центров сертификации Mozilla, зафиксированный на момент выпуска. Оно одинаково на всех поддерживаемых платформах.
Использование хранилища OpenSSL позволяет вносить в него внешние изменения. В большинстве дистрибутивов Linux и BSD это хранилище поддерживается разработчиками дистрибутива и системными администраторами. Расположение хранилища центров сертификации OpenSSL зависит от конфигурации библиотеки OpenSSL, но его можно изменить во время выполнения с помощью переменных среды.
См. SSL_CERT_DIR и SSL_CERT_FILE.
--use-largepages=mode
Переназначить статический код Node.js на большие страницы памяти при запуске. Если целевая система поддерживает эту возможность, статический код Node.js будет перенесен на страницы размером 2 МиБ вместо 4 КиБ.
Для mode допустимы следующие значения:
-
off: попытка переназначения выполняться не будет. Это значение по умолчанию. -
on: если операционная система поддерживает эту возможность, будет предпринята попытка переназначения. Ошибка переназначения будет проигнорирована, а сообщение выведено в стандартный поток ошибок. -
silent: если операционная система поддерживает эту возможность, будет предпринята попытка переназначения. Ошибка переназначения будет проигнорирована и не будет сообщена.
--use-system-ca
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
Вывести параметры командной строки V8.
--v8-pool-size=num
Задать размер пула потоков V8, который будет использоваться для распределения фоновых задач.
Если задано значение 0, Node.js выберет подходящий размер пула потоков на основе оценки уровня параллелизма.
Уровень параллелизма — это количество вычислений, которые могут выполняться одновременно на данном компьютере. Обычно оно соответствует количеству процессоров, но в таких средах, как виртуальные машины и контейнеры, эти значения могут различаться.
-v, --version
Вывести версию Node.js.
--watch
Запускает Node.js в режиме наблюдения. В этом режиме изменения в отслеживаемых файлах приводят к перезапуску процесса Node.js. По умолчанию в режиме наблюдения отслеживаются точка входа и все требуемые или импортированные модули. Используйте --watch-path, чтобы указать пути для отслеживания.
Этот флаг нельзя использовать вместе с --check, --eval, --interactive или REPL.
Примечание: для флага --watch требуется указать путь к файлу в качестве аргумента; он несовместим с --run и вводом встроенного скрипта, поскольку --run имеет приоритет и отключает режим наблюдения. Если файл не указан, Node.js завершит работу с кодом состояния 9.
node --watch index.js copy
--watch-kill-signal
Настраивает сигнал, отправляемый процессу при перезапуске в режиме наблюдения.
node --watch --watch-kill-signal SIGINT test.js copy
--watch-path
Запускает 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
Отключить очистку консоли при перезапуске процесса в режиме наблюдения.
node --watch --watch-preserve-output test.js copy
--zero-fill-buffers
Автоматически заполнять нулями все вновь выделенные экземпляры Buffer и SlowBuffer.
Переменные среды
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
Включает кэш компиляции модулей для экземпляра Node.js. Подробности см. в документации по кэшу компиляции модулей.
NODE_DEBUG=module[,…]
Список основных модулей, разделённых ',', для которых следует выводить отладочную информацию.
NODE_DEBUG_NATIVE=module[,…]
Список основных модулей C++, разделённых ',', для которых следует выводить отладочную информацию.
NODE_DISABLE_COLORS=1
Если задано, цвета в REPL не используются.
NODE_DISABLE_COMPILE_CACHE=1
Отключает кэш компиляции модулей для экземпляра Node.js. Подробности см. в документации по кэшу компиляции модулей.
NODE_EXTRA_CA_CERTS=file
Если задано, известные корневые центры сертификации (например, 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
Путь к данным ICU (данным объекта Intl). Дополняет встроенные данные, если сборка выполнена с поддержкой small-icu.
NODE_NO_WARNINGS=1
Если установлено значение 1, предупреждения процесса подавляются.
NODE_OPTIONS=options...
Список параметров командной строки, разделённых пробелами. 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[:…]
Список каталогов, разделённых ':' и добавляемых в начало пути поиска модулей.
В Windows вместо этого используется список, разделённый ';'.
NODE_PENDING_DEPRECATION=1
Если установлено значение 1, выводятся предупреждения об ожидающем устаревании.
Ожидающие устаревания в целом идентичны устареваниям во время выполнения, за заметным исключением: по умолчанию они отключены и выводятся только при наличии флага командной строки --pending-deprecation или переменной среды NODE_PENDING_DEPRECATION=1. Ожидающие устаревания служат своего рода механизмом выборочного «раннего предупреждения», который разработчики могут использовать для обнаружения обращений к устаревшему API.
NODE_PENDING_PIPE_INSTANCES=instances
Задаёт число ожидающих дескрипторов экземпляров канала, пока сервер канала ожидает подключений. Этот параметр применяется только в Windows.
NODE_PRESERVE_SYMLINKS=1
Если установлено значение 1, загрузчику модулей предписывается сохранять символические ссылки при разрешении путей и кэшировании модулей.
NODE_REDIRECT_WARNINGS=file
Если задано, предупреждения процесса будут записываться в указанный файл вместо вывода в stderr. Если файл не существует, он будет создан, а если существует — данные будут добавлены в конец. Если при записи предупреждения в файл возникнет ошибка, предупреждение будет выведено в stderr. Это эквивалентно использованию флага командной строки --redirect-warnings=file.
NODE_REPL_EXTERNAL_MODULE=file
Путь к модулю Node.js, который будет загружен вместо встроенного REPL. Если переопределить это значение пустой строкой (''), будет использоваться встроенный REPL.
NODE_REPL_HISTORY=file
Путь к файлу для хранения постоянной истории REPL. По умолчанию используется путь ~/.node_repl_history, который переопределяется этой переменной. Если задать пустую строку ('' или ' '), постоянное хранение истории REPL отключается.
NODE_SKIP_PLATFORM_CHECK=value
Если 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
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 Кэш карт исходного кода
Если данные карт исходного кода найдены, они добавляются в ключ верхнего уровня 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
Загружает файл конфигурации OpenSSL при запуске. Помимо прочего, его можно использовать для включения криптографии, соответствующей требованиям FIPS, если Node.js собран с ./configure --openssl-fips.
Если используется параметр командной строки --openssl-config, переменная среды игнорируется.
SSL_CERT_DIR=dir
Если включён --use-openssl-ca или на платформах, отличных от macOS и Windows, включён --use-system-ca, эта переменная переопределяет и задаёт каталог OpenSSL с доверенными сертификатами.
Обратите внимание: если среда дочернего процесса явно не задана, эта переменная среды наследуется всеми дочерними процессами. Если они используют OpenSSL, это может привести к тому, что они будут доверять тем же центрам сертификации, что и node.
SSL_CERT_FILE=file
Если включён --use-openssl-ca или на платформах, отличных от macOS и Windows, включён --use-system-ca, эта переменная переопределяет и задаёт файл OpenSSL с доверенными сертификатами.
Обратите внимание: если среда дочернего процесса явно не задана, эта переменная среды наследуется всеми дочерними процессами. Если они используют OpenSSL, это может привести к тому, что они будут доверять тем же центрам сертификации, что и node.
TZ
Переменная среды 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