API командной строки
Node.js поставляется с множеством параметров CLI. Эти параметры предоставляют встроенные средства отладки, различные способы выполнения скриптов и другие полезные параметры среды выполнения.
Чтобы просмотреть эту документацию в терминале в виде страницы руководства, выполните man node.
Краткое описание
node [options] [V8 options] [<program-entry-point> | -e "script" | -] [--] [arguments]
node inspect [<program-entry-point> | -e "script" | <host>:<port>] …
node --v8-options
Запустите без аргументов, чтобы открыть REPL.
Дополнительную информацию о node inspect см. в документации по отладчику.
Точка входа программы
Точка входа программы — это строка, похожая на спецификатор. Если строка не является абсолютным путём, она разрешается как относительный путь от текущего рабочего каталога. Затем эта строка точки входа разрешается так, как если бы она была запрошена с помощью require() из текущего рабочего каталога. Если соответствующий файл не найден, возникает ошибка.
По умолчанию разрешённый путь также загружается так, как если бы он был запрошен с помощью require(), за исключением случаев, перечисленных ниже; в этих случаях он загружается так, как если бы он был запрошен с помощью import():
- Программа запущена с флагом командной строки, который принудительно загружает точку входа с помощью загрузчика модулей ECMAScript, например
--import. - Файл имеет расширение
.mjs,.mtsили.wasm. - Файл не имеет расширения
.cjs, а в ближайшем родительском файлеpackage.jsonсодержится поле верхнего уровня"type"со значением"module".
Дополнительные сведения см. в разделе разрешение и загрузка модулей.
Параметры
Во всех параметрах, включая параметры V8, слова могут разделяться как дефисами (-), так и подчеркиваниями (_). Например, --pending-deprecation эквивалентно --pending_deprecation.
Если параметр, принимающий одно значение (например, --max-http-header-size), передан несколько раз, используется последнее переданное значение. Параметры командной строки имеют приоритет над параметрами, переданными через переменную окружения NODE_OPTIONS.
-
Псевдоним stdin. Аналогично использованию - в других утилитах командной строки: скрипт считывается из stdin, а остальные параметры передаются этому скрипту.
--
Обозначает конец параметров Node.js. Передает оставшиеся аргументы скрипту. Если до этого не указано имя файла скрипта или скрипт для выполнения/вывода, следующий аргумент используется как имя файла скрипта.
--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-inspector
При использовании модели разрешений процесс не сможет подключаться через протокол инспектора.
Попытки сделать это вызовут ERR_ACCESS_DENIED, если пользователь явно не передаст флаг --allow-inspector при запуске Node.js.
Пример:
const { Session } = require('node:inspector/promises');
const session = new Session();
session.connect(); copy $ node --permission index.js Error: connect ERR_ACCESS_DENIED Access to this API has been restricted. Use --allow-inspector to manage permissions. code: 'ERR_ACCESS_DENIED', } copy
--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
При завершении процесса создает снимок в виде blob-объекта и записывает его на диск; позже его можно загрузить с помощью --snapshot-blob.
При создании снимка, если --snapshot-blob не указан, созданный blob-объект по умолчанию будет записан в snapshot.blob в текущем рабочем каталоге. В противном случае он будет записан по пути, указанному в --snapshot-blob.
$ echo "globalThis.foo = 'I am from the snapshot'" > snapshot.js # Run snapshot.js to initialize the application and snapshot the # state of it into snapshot.blob. $ node --snapshot-blob snapshot.blob --build-snapshot snapshot.js $ echo "console.log(globalThis.foo)" > index.js # Load the generated snapshot and start the application from index.js. $ node --snapshot-blob snapshot.blob index.js I am from the snapshot copy
API v8.startupSnapshot можно использовать для указания точки входа во время создания снимка, что позволит избежать необходимости в дополнительном скрипте входа при десериализации:
$ echo "require('v8').startupSnapshot.setDeserializeMainFunction(() => console.log('I am from the snapshot'))" > snapshot.js
$ node --snapshot-blob snapshot.blob --build-snapshot snapshot.js
$ node --snapshot-blob snapshot.blob
I am from the snapshot copy Дополнительные сведения см. в документации по API v8.startupSnapshot.
В настоящее время снимок поддерживает загрузку только одной точки входа во время создания; она может загружать встроенные модули, но не дополнительные пользовательские модули. Перед созданием снимка пользователи могут объединить приложения в один скрипт с помощью выбранного ими сборщика.
Поскольку сложно гарантировать сериализуемость всех встроенных модулей, количество которых со временем растет, во время создания снимка тщательно проверяется сериализуемость только части встроенных модулей. Набор основных тестов Node.js проверяет возможность создания снимков для нескольких достаточно сложных приложений. Список встроенных модулей, включенных во встроенный снимок Node.js, считается поддерживаемым. Если при создании снимка встречается встроенный модуль, который невозможно сериализовать, процесс создания снимка может завершиться сбоем. В этом случае обычно можно отложить загрузку такого модуля до выполнения программы, используя v8.startupSnapshot.setDeserializeMainFunction() или v8.startupSnapshot.addDeserializeCallback(). Если во время создания снимка требуется сериализация дополнительного модуля, отправьте запрос в систему отслеживания ошибок 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. Модули, предопределенные в REPL, также можно использовать в script.
В Windows использование cmd.exe с одинарными кавычками не будет работать должным образом, поскольку для заключения текста в кавычки распознаются только двойные ". В Powershell или Git bash можно использовать и ', и ".
Можно запускать код со встроенными типами, если не указан флаг --no-strip-types.
--experimental-addon-modules
Включает экспериментальную поддержку импорта дополнений .node.
--experimental-config-file=config
Если указан, Node.js будет искать файл конфигурации по заданному пути. Node.js прочитает файл конфигурации и применит настройки. Файл конфигурации должен быть файлом JSON следующей структуры. 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
},
"testRunner": {
"test-isolation": "process"
},
"watch": {
"watch-preserve-output": true
}
} copy Файл конфигурации поддерживает параметры, специфичные для пространств имён:
-
Поле
nodeOptionsсодержит флаги CLI, разрешённые вNODE_OPTIONS. -
Поля пространств имён, такие как
testRunner, содержат конфигурацию, специфичную для соответствующей подсистемы.
Флаги без действия не поддерживаются. В настоящее время поддерживаются не все флаги V8.
Для проверки файла конфигурации можно использовать официальную схему JSON, которая может различаться в зависимости от версии Node.js. Каждый ключ в файле конфигурации соответствует флагу, который можно передать в качестве аргумента командной строки. Значение ключа — это значение, которое будет передано флагу.
Например, приведённый выше файл конфигурации эквивалентен следующим аргументам командной строки:
node --import amaro/strip --watch-path=src --watch-preserve-output --test-isolation=process copy
Приоритет настроек конфигурации следующий:
- NODE_OPTIONS и параметры командной строки
- Файл конфигурации
- NODE_OPTIONS из Dotenv
Значения в файле конфигурации не переопределяют значения в переменных окружения и параметрах командной строки, но переопределяют значения в файле окружения NODE_OPTIONS, разобранном с помощью флага --env-file.
Ключи нельзя дублировать в одном или разных пространствах имён.
Парсер конфигурации выдаст ошибку, если файл конфигурации содержит неизвестные ключи или ключи, которые нельзя использовать в данном пространстве имён.
Node.js не очищает и не проверяет конфигурацию, предоставленную пользователем, поэтому НИКОГДА не используйте ненадёжные файлы конфигурации.
--experimental-default-config-file
Если указан флаг --experimental-default-config-file, Node.js будет искать файл node.config.json в текущем рабочем каталоге и загружать его как файл конфигурации.
--experimental-eventsource
Включает доступность веб-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 на верхнем уровне 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-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-worker-inspection
Включает экспериментальную поддержку инспекции рабочих потоков с помощью 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, так и нативной памяти вне кучи V8). Чем больше куча, тем больше ресурсов требуется. Node.js скорректирует размер кучи 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. Для загрузки модуля CommonJS используйте --require. Модули, предварительно загруженные с помощью --require, выполняются до модулей, предварительно загруженных с помощью --import.
Модули предварительно загружаются в основной поток, а также во все рабочие потоки, дочерние процессы и процессы кластера.
--input-type=type
Настраивает Node.js на интерпретацию входных данных --eval или STDIN как CommonJS или ES-модуля. Допустимые значения: "commonjs", "module", "module-typescript" и "commonjs-typescript". Значения "-typescript" недоступны с флагом --no-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 Inspector с Node.js».
Сведения о параметре host см. в приведённом ниже предупреждении о безопасности.
--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 Inspector с Node.js».
Сведения о параметре host см. в приведённом ниже предупреждении о безопасности.
--inspect[=[host:]port]
Активирует инспектор на host:port. Значение по умолчанию — 127.0.0.1:9229. Если указан порт 0, будет использоваться случайный доступный порт.
Интеграция с V8 Inspector позволяет таким инструментам, как Chrome DevTools и IDE, выполнять отладку и профилирование экземпляров Node.js. Инструменты подключаются к экземплярам Node.js через порт TCP и взаимодействуют с помощью протокола Chrome DevTools. Дополнительные сведения об отладчике Node.js см. в разделе «Интеграция V8 Inspector с Node.js».
Предупреждение: привязка инспектора к общедоступной комбинации IP-адреса и порта небезопасна
Привязка инспектора к общедоступному IP-адресу (включая 0.0.0.0) с открытым портом небезопасна, поскольку позволяет внешним узлам подключаться к инспектору и выполнять атаку с удалённым выполнением кода.
Если указывается хост, убедитесь, что выполняется хотя бы одно из условий:
- Хост недоступен из общедоступных сетей.
- Брандмауэр блокирует нежелательные подключения к порту.
В частности, --inspect=0.0.0.0 небезопасен, если порт (по умолчанию 9229) не защищён брандмауэром.
Дополнительные сведения см. в разделе «Последствия отладки для безопасности».
-i, --interactive
Открывает REPL, даже если stdin не распознаётся как терминал.
--jitless
Отключает выделение исполняемой памяти во время выполнения. Это может потребоваться на некоторых платформах по соображениям безопасности. На других платформах это также может уменьшить поверхность атаки, но влияние на производительность может быть значительным.
--localstorage-file=file
--experimental-webstorage.Файл, используемый для хранения данных localStorage. Если файл не существует, он создаётся при первом обращении к localStorage. Один и тот же файл могут одновременно использовать несколько процессов Node.js.
--max-http-header-size=size
Указывает максимальный размер заголовков HTTP в байтах. По умолчанию — 16 КиБ.
--max-old-space-size-percentage=percentage
Задаёт максимальный размер старого сегмента памяти V8 в процентах от доступной системной памяти. Если указаны оба флага, этот флаг имеет приоритет над --max-old-space-size.
Параметр percentage должен быть числом больше 0 и не превышать 100; он задаёт процент доступной системной памяти, выделяемый для кучи V8.
Примечание: Этот флаг использует --max-old-space-size, который может работать ненадёжно на 32-разрядных платформах из-за переполнения целых чисел.
# Using 50% of available system memory node --max-old-space-size-percentage=50 index.js # Using 75% of available system memory node --max-old-space-size-percentage=75 index.js copy
--napi-modules
Этот параметр ничего не делает. Он сохранён для совместимости.
--network-family-autoselection-attempt-timeout
Задаёт значение по умолчанию для времени ожидания попытки автоматического выбора семейства сетевых адресов. Дополнительные сведения см. в разделе net.getDefaultAutoSelectFamilyAttemptTimeout().
--no-addons
Отключает условие экспорта node-addons, а также загрузку нативных дополнений. Если указано --no-addons, вызов process.dlopen или подключение нативного дополнения на C++ завершится ошибкой и вызовет исключение.
--no-async-context-frame
Отключает использование AsyncLocalStorage, использующего AsyncContextFrame, и возвращается к предыдущей реализации, основанной на async_hooks. Предыдущая модель сохраняется для совместимости с Electron и на случай, если поток контекста может отличаться. Если вы обнаружите различие в потоке, сообщите об этом.
--no-deprecation
Отключает предупреждения об устаревших функциях.
--no-experimental-detect-module
Отключает использование обнаружения синтаксиса для определения типа модуля.
--no-experimental-global-navigator
Отключает предоставление API Navigator в глобальной области видимости.
--no-experimental-repl-await
Используйте этот флаг, чтобы отключить await верхнего уровня в REPL.
--no-experimental-require-module
Отключает поддержку загрузки синхронного графа модулей ES в require().
См. раздел «Загрузка модулей ECMAScript с помощью require()».
--no-experimental-sqlite
Отключает экспериментальный модуль node:sqlite.
--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-strip-types
Отключает удаление типов в файлах TypeScript. Дополнительные сведения см. в документации по удалению типов TypeScript.
--no-warnings
Отключает все предупреждения процесса (включая предупреждения об устаревших функциях).
--node-memory-debug
Включает дополнительные проверки для отладки утечек памяти во внутренних компонентах Node.js. Обычно это полезно только разработчикам, отлаживающим сам Node.js.
--openssl-config=file
Загружает файл конфигурации OpenSSL при запуске. Помимо прочего, это можно использовать для включения криптографии, соответствующей стандарту FIPS, если Node.js собран с поддержкой FIPS в OpenSSL.
--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: имя выполняемого сценария. Например, если--runиспользуется для запускаtest, значение этой переменной будет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
Максимальное количество файлов тестов, которые CLI средства запуска тестов будет выполнять одновременно. Если --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-global-setup=module
Задаёт модуль, который будет выполнен до запуска всех тестов и может использоваться для настройки глобального состояния или тестовых приспособлений.
Дополнительные сведения см. в документации о глобальной настройке и очистке.
--test-isolation=mode
Настраивает тип изоляции тестов, используемый средством запуска тестов. Если mode имеет значение 'process', каждый файл тестов выполняется в отдельном дочернем процессе. Если mode имеет значение 'none', все файлы тестов выполняются в том же процессе, что и средство запуска тестов. По умолчанию используется режим изоляции 'process'. Этот флаг игнорируется, если флаг --test не указан. Дополнительные сведения см. в разделе модель выполнения средства запуска тестов.
--test-name-pattern
Регулярное выражение, которое настраивает средство запуска тестов на выполнение только тех тестов, имена которых соответствуют заданному шаблону. Подробнее см. в документации о фильтрации тестов по имени.
Если заданы оба параметра --test-name-pattern и --test-skip-pattern, для выполнения тесты должны соответствовать обоим требованиям.
--test-only
Настраивает средство запуска тестов на выполнение только тестов верхнего уровня, для которых задан параметр only. Этот флаг не нужен, если изоляция тестов отключена.
--test-reporter
Средство формирования отчетов о тестировании, используемое при запуске тестов. Подробнее см. в документации о средствах формирования отчетов о тестировании.
--test-reporter-destination
Назначение для соответствующего средства формирования отчетов о тестировании. Подробнее см. в документации о средствах формирования отчетов о тестировании.
--test-rerun-failures
Путь к файлу, который позволяет средству запуска тестов сохранять состояние набора тестов между запусками. Средство запуска тестов использует этот файл, чтобы определить, какие тесты уже прошли или завершились с ошибкой, и повторно запускать неудачные тесты, не запуская весь набор тестов заново. Если файл не существует, средство запуска тестов создаст его. Подробнее см. в документации о повторном запуске тестов.
--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-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
Использовать хранилище сертификатов CA Mozilla, включенное в текущую версию Node.js, либо хранилище CA OpenSSL по умолчанию. Хранилище по умолчанию можно выбрать во время сборки.
Включенное в Node.js хранилище CA — это снимок хранилища CA Mozilla, зафиксированный на момент выпуска. Оно одинаково на всех поддерживаемых платформах.
Использование хранилища OpenSSL позволяет изменять его извне. В большинстве дистрибутивов Linux и BSD это хранилище обслуживают сопровождающие дистрибутива и системные администраторы. Расположение хранилища CA OpenSSL зависит от конфигурации библиотеки OpenSSL, но его можно изменить во время выполнения с помощью переменных среды.
См. SSL_CERT_DIR и SSL_CERT_FILE.
--use-env-proxy
Если параметр включен, Node.js при запуске анализирует переменные среды HTTP_PROXY, HTTPS_PROXY и NO_PROXY и направляет запросы через указанный прокси-сервер.
Это равнозначно заданию переменной среды NODE_USE_ENV_PROXY=1. Если заданы оба параметра, приоритет имеет --use-env-proxy.
--use-largepages=mode
При запуске повторно сопоставлять статический код Node.js с большими страницами памяти. Если целевая система поддерживает эту возможность, статический код Node.js будет размещен на страницах размером 2 МиБ вместо 4 КиБ.
Для mode допустимы следующие значения:
-
off: сопоставление выполняться не будет. Это значение по умолчанию. -
on: если операционная система поддерживает эту возможность, будет предпринята попытка сопоставления. Ошибка сопоставления будет проигнорирована, а сообщение выведено в стандартный поток ошибок. -
silent: если операционная система поддерживает эту возможность, будет предпринята попытка сопоставления. Ошибка сопоставления будет проигнорирована без вывода сообщения.
--use-system-ca
Node.js использует доверенные сертификаты CA из системного хранилища вместе с параметром --use-bundled-ca и переменной среды NODE_EXTRA_CA_CERTS. На платформах, отличных от Windows и macOS, сертификаты загружаются из каталога и файла, которым доверяет OpenSSL, аналогично --use-openssl-ca, но после первой загрузки сертификаты кэшируются.
В Windows и macOS политика доверия сертификатам аналогична политике Chromium в отношении локально доверенных сертификатов, но имеет некоторые отличия:
В macOS учитываются следующие настройки:
- Связки ключей по умолчанию и системная связка ключей
- Доверие:
- Любой сертификат, для которого установлен флажок «При использовании этого сертификата» со значением «Всегда доверять», или
- любой сертификат, для которого установлен флажок «Уровень защищенных сокетов (SSL)» со значением «Всегда доверять».
- Сертификат также должен быть действительным, а для «Базовой политики X.509» должно быть задано значение «Всегда доверять».
- Доверие:
В Windows учитываются следующие настройки:
- Локальный компьютер (доступ через
certlm.msc)- Доверие:
- Доверенные корневые центры сертификации
- Доверенные лица
- Корпоративное доверие -> Корпоративная среда -> Доверенные корневые центры сертификации
- Корпоративное доверие -> Корпоративная среда -> Доверенные лица
- Корпоративное доверие -> Групповая политика -> Доверенные корневые центры сертификации
- Корпоративное доверие -> Групповая политика -> Доверенные лица
- Доверие:
- Текущий пользователь (доступ через
certmgr.msc)- Доверие:
- Доверенные корневые центры сертификации
- Корпоративное доверие -> Групповая политика -> Доверенные корневые центры сертификации
- Доверие:
В Windows и macOS перед использованием доверенных сертификатов Node.js проверяет, что пользовательские настройки не запрещают их для аутентификации TLS-серверов.
В настоящее время Node.js не поддерживает недоверие к сертификатам или их отзыв на основе системных настроек, если они поступили из другого источника.
В других системах 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_COMPILE_CACHE_PORTABLE=1
Если установлено значение 1, кэш компиляции модулей можно повторно использовать в разных каталогах, при условии что структура модулей относительно каталога кэша остается неизменной.
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-клиента либо сервера явно задано свойство options 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-inspector--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-detect-module--experimental-eventsource--experimental-import-meta-resolve--experimental-json-modules--experimental-loader--experimental-modules--experimental-print-required-tla--experimental-require-module--experimental-shadow-realm--experimental-specifier-resolution--experimental-test-isolation--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--max-old-space-size-percentage--napi-modules--network-family-autoselection-attempt-timeout--no-addons--no-async-context-frame--no-deprecation--no-experimental-global-navigator--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-strip-types--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-global-setup--test-isolation--test-name-pattern--test-only--test-reporter-destination--test-reporter--test-rerun-failures--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-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-env-proxy--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--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_ENV_PROXY=1
Если включено, Node.js при запуске анализирует переменные окружения HTTP_PROXY, HTTPS_PROXY и NO_PROXY и туннелирует запросы через указанный прокси-сервер.
Эту функцию также можно включить с помощью флага командной строки --use-env-proxy. Если заданы оба параметра, приоритет имеет --use-env-proxy.
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), разобранные данные карты исходного кода версии 3 (в ключе 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, но при их отсутствии использует пул потоков libuv, чтобы создавать асинхронные API Node.js на основе синхронных системных API. К 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
--heap-snapshot-on-oom
--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 (в МиБ)
Задает максимальный размер полупространства для сборщика мусора V8 scavenge в МиБ (мебибайтах). Увеличение максимального размера полупространства может повысить пропускную способность 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-v24.x/docs/api/cli.html