Интерфейс командной строки
Node.js поставляется с множеством опций CLI. Эти опции предоставляют встроенную отладку, несколько способов выполнения скриптов и другие полезные параметры среды выполнения.
Чтобы просмотреть эту документацию как страницу руководства в терминале, запустите man node
.
Краткое описание
node [опции] [опции V8] [<точка_входа_программы> | -e "скрипт" | -] [--] [аргументы]
node inspect [<точка_входа_программы> | -e "скрипт" | <хост>:<порт>] …
node --v8-options
Запустите без аргументов, чтобы начать REPL.
Для получения дополнительной информации о node inspect
см. документацию отладчика.
Точка входа программы
Точка входа программы является строкой, похожей на спецификатор. Если строка не является абсолютным путем, она разрешается как относительный путь от текущего рабочего каталога. Этот путь затем разрешается загрузчиком модулей CommonJS. Если соответствующий файл не найден, возникает ошибка.
Если файл найден, его путь будет передан загрузчику модулей ES при любом из следующих условий:
- Программа была запущена с флагом командной строки, который заставляет точку входа загружаться с помощью загрузчика модулей ECMAScript, такого как
--import
. - Файл имеет расширение
.mjs
. - Файл не имеет расширения
.cjs
, а ближайший родительский файлpackage.json
содержит поле верхнего уровня"type"
со значением"module"
.
В противном случае файл загружается с помощью загрузчика модулей CommonJS. Подробнее см. Загрузчики модулей.
Предостережение о точке входа загрузчика модулей ECMAScript
При загрузке загрузчик модулей ES загружает точку входа программы, команда node
будет принимать в качестве входных данных только файлы с расширениями .js
, .mjs
или .cjs
; и с расширениями .wasm
, когда включен --experimental-wasm-modules
.
Опции
[История]
Версия | Изменения |
---|---|
v10.12.0 | Для опций Node.js теперь также разрешены подчеркивания вместо дефисов, в дополнение к опциям V8. |
Все опции, включая опции V8, позволяют разделять слова как дефисами (-
), так и подчеркиваниями (_
). Например, --pending-deprecation
эквивалентно --pending_deprecation
.
Если опция, которая принимает одно значение (например, --max-http-header-size
), передается более одного раза, то используется последнее переданное значение. Опции из командной строки имеют приоритет над опциями, переданными через переменную среды NODE_OPTIONS
.
-
Добавлено в: v8.0.0
Псевдоним для stdin. Аналогично использованию -
в других утилитах командной строки, что означает, что скрипт читается из stdin, а остальные параметры передаются этому скрипту.
--
Добавлено в: v6.11.0
Указывает на конец параметров node. Передает остальные аргументы скрипту. Если до этого не было указано имя файла скрипта или скрипт eval/print, то следующий аргумент используется в качестве имени файла скрипта.
--abort-on-uncaught-exception
Добавлено в: v0.10.8
Прерывание вместо выхода приводит к генерации файла core для посмертного анализа с использованием отладчика (такого как lldb
, gdb
и mdb
).
Если этот флаг передан, поведение по-прежнему может быть установлено таким образом, чтобы не прерывать выполнение с помощью process.setUncaughtExceptionCaptureCallback()
(и через использование модуля node:domain
, который его использует).
--allow-addons
Добавлено в: v21.6.0, v20.12.0
[Стабильность: 1 - Экспериментальная]
Стабильность: 1 Стабильность: 1.1 - Активная разработка
При использовании Модели разрешений процесс по умолчанию не сможет использовать нативные дополнения. Попытки сделать это вызовут ошибку ERR_DLOPEN_DISABLED
, если пользователь явно не передаст флаг --allow-addons
при запуске Node.js.
Пример:
// Попытка потребовать нативное дополнение
require('nodejs-addon-example')
$ 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'
}
--allow-child-process
Добавлено в: v20.0.0
[Стабильность: 1 - Экспериментальный]
Стабильность: 1 Стабильность: 1.1 - Активная разработка
При использовании Модели разрешений процесс не сможет по умолчанию порождать дочерние процессы. Попытки сделать это приведут к выбросу ошибки ERR_ACCESS_DENIED
, если пользователь явно не передаст флаг --allow-child-process
при запуске Node.js.
Пример:
const childProcess = require('node:child_process')
// Попытка обойти разрешение
childProcess.spawn('node', ['-e', 'require("fs").writeFileSync("/new-file", "example")'])
$ 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 Object.spawn (node:child_process:723:9)
at Object.<anonymous> (/home/index.js:3:14)
at Module._compile (node:internal/modules/cjs/loader:1120:14)
at Module._extensions..js (node:internal/modules/cjs/loader:1174:10)
at Module.load (node:internal/modules/cjs/loader:998:32)
at Module._load (node:internal/modules/cjs/loader:839:12)
at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:81:12)
at node:internal/main/run_main_module:17:47 {
code: 'ERR_ACCESS_DENIED',
permission: 'ChildProcess'
}
--allow-fs-read
[История]
Версия | Изменения |
---|---|
v23.5.0 | Модель разрешений и флаги --allow-fs являются стабильными. |
v20.7.0 | Пути, разделенные запятой (, ), больше не допускаются. |
v20.0.0 | Добавлено в: v20.0.0 |
[Стабильность: 2 - Стабильный]
Стабильность: 2 Стабильность: 2 - Стабильный.
Этот флаг настраивает разрешения на чтение файловой системы с помощью Модели разрешений.
Допустимые аргументы для флага --allow-fs-read
:
*
- для разрешения всех операцийFileSystemRead
.- Разрешить несколько путей можно с помощью нескольких флагов
--allow-fs-read
. Пример:--allow-fs-read=/folder1/ --allow-fs-read=/folder1/
Примеры можно найти в документации Разрешения файловой системы.
Также должен быть разрешен модуль инициализации. Рассмотрим следующий пример:
$ node --permission index.js
Error: Access to this API has been restricted
at node:internal/main/run_main_module:23:47 {
code: 'ERR_ACCESS_DENIED',
permission: 'FileSystemRead',
resource: '/Users/rafaelgss/repos/os/node/index.js'
}
Процесс должен иметь доступ к модулю index.js
:
node --permission --allow-fs-read=/path/to/index.js index.js
--allow-fs-write
[История]
Версия | Изменения |
---|---|
v23.5.0 | Модель разрешений и флаги --allow-fs являются стабильными. |
v20.7.0 | Пути, разделенные запятой (, ), больше не допускаются. |
v20.0.0 | Добавлено в: v20.0.0 |
[Стабильно: 2 - Стабильно]
Стабильно: 2 Стабильность: 2 - Стабильно.
Этот флаг настраивает разрешения на запись в файловую систему с помощью Модели разрешений.
Действительными аргументами для флага --allow-fs-write
являются:
*
- Разрешить все операцииFileSystemWrite
.- Можно разрешить несколько путей, используя несколько флагов
--allow-fs-write
. Пример--allow-fs-write=/folder1/ --allow-fs-write=/folder1/
Пути, разделенные запятой (,
), больше не допускаются. При передаче одного флага с запятой будет отображаться предупреждение.
Примеры можно найти в документации Разрешения файловой системы.
--allow-wasi
Добавлено в: v22.3.0, v20.16.0
[Стабильно: 1 - Экспериментально]
Стабильно: 1 Стабильность: 1.1 - Активная разработка
При использовании Модели разрешений процесс по умолчанию не сможет создавать какие-либо экземпляры WASI. Из соображений безопасности вызов выдаст ERR_ACCESS_DENIED
, если пользователь явно не передаст флаг --allow-wasi
в основном процессе Node.js.
Пример:
const { WASI } = require('node:wasi')
// Попытка обойти разрешение
new WASI({
version: 'preview1',
// Попытка примонтировать всю файловую систему
preopens: {
'/': '/',
},
})
$ 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',
}
--allow-worker
Добавлено в: v20.0.0
[Стабильно: 1 - Экспериментально]
Стабильно: 1 Стабильность: 1.1 - Активная разработка
При использовании Модели разрешений процесс по умолчанию не сможет создавать какие-либо рабочие потоки. Из соображений безопасности вызов выдаст ERR_ACCESS_DENIED
, если пользователь явно не передаст флаг --allow-worker
в основном процессе Node.js.
Пример:
const { Worker } = require('node:worker_threads')
// Попытка обойти разрешение
new Worker(__filename)
$ 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'
}
--build-snapshot
Добавлено в: v18.8.0
[Стабильность: 1 - Экспериментально]
Стабильность: 1 Стабильность: 1 - Экспериментально
Генерирует снимок (blob) при завершении процесса и записывает его на диск, который можно загрузить позже с помощью --snapshot-blob
.
При создании снимка, если --snapshot-blob
не указан, сгенерированный blob будет записан по умолчанию в snapshot.blob
в текущем рабочем каталоге. В противном случае он будет записан по пути, указанному в --snapshot-blob
.
$ echo "globalThis.foo = 'Я из снимка'" > snapshot.js
# Запустите snapshot.js, чтобы инициализировать приложение и сохранить {#run-snapshotjs-to-initialize-the-application-and-snapshot-the}
# его состояние в snapshot.blob.
$ node --snapshot-blob snapshot.blob --build-snapshot snapshot.js
$ echo "console.log(globalThis.foo)" > index.js
# Загрузите созданный снимок и запустите приложение из index.js. {#state-of-it-into-snapshotblob}
$ node --snapshot-blob snapshot.blob index.js
Я из снимка
API v8.startupSnapshot
может быть использован для указания точки входа во время построения снимка, тем самым избегая необходимости в дополнительном начальном скрипте во время десериализации:
$ echo "require('v8').startupSnapshot.setDeserializeMainFunction(() => console.log('Я из снимка'))" > snapshot.js
$ node --snapshot-blob snapshot.blob --build-snapshot snapshot.js
$ node --snapshot-blob snapshot.blob
Я из снимка
Для получения дополнительной информации ознакомьтесь с документацией по API v8.startupSnapshot
.
В настоящее время поддержка снимков во время выполнения является экспериментальной, поскольку:
--build-snapshot-config
Добавлено в: v21.6.0, v20.12.0
[Стабильность: 1 - Экспериментально]
Стабильность: 1 Стабильность: 1 - Экспериментально
Указывает путь к файлу конфигурации JSON, который настраивает поведение создания снимков.
В настоящее время поддерживаются следующие параметры:
builder
<string> Обязательно. Предоставляет имя скрипта, который выполняется перед созданием снимка, как если бы был передан--build-snapshot
сbuilder
в качестве имени основного скрипта.withoutCodeCache
<boolean> Необязательно. Включение кеша кода сокращает время, затрачиваемое на компиляцию функций, включенных в снимок, за счет увеличения размера снимка и потенциального нарушения переносимости снимка.
При использовании этого флага дополнительные файлы скриптов, предоставленные в командной строке, не будут выполнены и вместо этого будут интерпретироваться как обычные аргументы командной строки.
-c
, --check
[История]
Версия | Изменения |
---|---|
v10.0.0 | Опция --require теперь поддерживается при проверке файла. |
v5.0.0, v4.2.0 | Добавлено в: v5.0.0, v4.2.0 |
Выполнить синтаксическую проверку скрипта без выполнения.
--completion-bash
Добавлено в: v10.12.0
Вывести скрипт автодополнения bash для Node.js, который можно включить в текущую оболочку.
node --completion-bash > node_bash_completion
source node_bash_completion
-C condition
, --conditions=condition
[История]
Версия | Изменения |
---|---|
v22.9.0, v20.18.0 | Флаг больше не является экспериментальным. |
v14.9.0, v12.19.0 | Добавлено в: v14.9.0, v12.19.0 |
[Стабильность: 2 - Стабильный]
Стабильность: 2 Стабильность: 2 - Стабильный
Предоставить пользовательские условия разрешения условных экспортов.
Допускается любое количество пользовательских строковых имен условий.
Условия Node.js по умолчанию "node"
, "default"
, "import"
и "require"
всегда будут применяться в соответствии с определением.
Например, чтобы запустить модуль с разрешениями "development":
node -C development app.js
--cpu-prof
[История]
Версия | Изменения |
---|---|
v22.4.0, v20.16.0 | Флаги --cpu-prof теперь стабильны. |
v12.0.0 | Добавлено в: v12.0.0 |
[Стабильность: 2 - Стабильный]
Стабильность: 2 Стабильность: 2 - Стабильный
Запускает CPU-профайлер 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
--cpu-prof-dir
[История]
Версия | Изменения |
---|---|
v22.4.0, v20.16.0 | Флаги --cpu-prof теперь стабильны. |
v12.0.0 | Добавлено в: v12.0.0 |
[Стабильность: 2 - Стабильный]
Стабильность: 2 Стабильность: 2 - Стабильный
Указать каталог, в который будут помещены профили ЦП, сгенерированные --cpu-prof
.
Значение по умолчанию контролируется параметром командной строки --diagnostic-dir
.
--cpu-prof-interval
[История]
Версия | Изменения |
---|---|
v22.4.0, v20.16.0 | Флаги --cpu-prof теперь являются стабильными. |
v12.2.0 | Добавлено в: v12.2.0 |
[Стабильно: 2 - Стабильно]
Стабильно: 2 Стабильность: 2 - Стабильно
Указывает интервал выборки в микросекундах для профилей ЦП, создаваемых с помощью --cpu-prof
. Значение по умолчанию — 1000 микросекунд.
--cpu-prof-name
[История]
Версия | Изменения |
---|---|
v22.4.0, v20.16.0 | Флаги --cpu-prof теперь являются стабильными. |
v12.0.0 | Добавлено в: v12.0.0 |
[Стабильно: 2 - Стабильно]
Стабильно: 2 Стабильность: 2 - Стабильно
Указывает имя файла профиля ЦП, создаваемого с помощью --cpu-prof
.
--diagnostic-dir=directory
Устанавливает каталог, в который записываются все диагностические выходные файлы. По умолчанию используется текущий рабочий каталог.
Влияет на каталог вывода по умолчанию для:
--disable-proto=mode
Добавлено в: v13.12.0, v12.17.0
Отключает свойство Object.prototype.__proto__
. Если mode
имеет значение delete
, свойство удаляется полностью. Если mode
имеет значение throw
, то обращения к свойству вызывают исключение с кодом ERR_PROTO_ACCESS
.
--disable-warning=code-or-type
[Стабильно: 1 - Экспериментально]
Стабильно: 1 Стабильность: 1 - Активная разработка
Добавлено в: v21.3.0, v20.11.0
Отключает определенные предупреждения процесса по коду
или типу
.
Предупреждения, испускаемые из process.emitWarning()
, могут содержать код
и тип
. Эта опция не будет выдавать предупреждения, у которых совпадают код
или тип
.
Список предупреждений об устаревании.
Типами предупреждений ядра Node.js являются: DeprecationWarning
и ExperimentalWarning
.
Например, следующий сценарий не будет выдавать DEP0025 require('node:sys')
при выполнении с node --disable-warning=DEP0025
:
import sys from 'node:sys'
const sys = require('node:sys')
Например, следующий скрипт выдаст DEP0025 require('node:sys')
, но не выдаст никаких экспериментальных предупреждений (таких как ExperimentalWarning: vm.measureMemory
is an experimental feature в <=v21) при выполнении с node --disable-warning=ExperimentalWarning
:
import sys from 'node:sys'
import vm from 'node:vm'
vm.measureMemory()
const sys = require('node:sys')
const vm = require('node:vm')
vm.measureMemory()
--disable-wasm-trap-handler
Добавлено в версиях: v22.2.0, v20.15.0
По умолчанию Node.js включает проверку границ WebAssembly на основе обработчика ловушек. В результате V8 не нужно вставлять встроенные проверки границ в код, скомпилированный из WebAssembly, что может значительно ускорить выполнение WebAssembly, но для этой оптимизации требуется выделение большой виртуальной памяти (в настоящее время 10 ГБ). Если процесс Node.js не имеет доступа к достаточно большому пространству виртуальной памяти из-за системных конфигураций или ограничений оборудования, пользователи не смогут запускать WebAssembly, который включает выделение памяти в этой виртуальной области, и увидят ошибку нехватки памяти.
$ ulimit -v 5000000
$ node -p "new WebAssembly.Memory({ initial: 10, maximum: 100 });"
[eval]:1
new WebAssembly.Memory({ initial: 10, maximum: 100 });
^
RangeError: WebAssembly.Memory(): could not allocate memory
at [eval]:1:1
at runScriptInThisContext (node:internal/vm:209:10)
at node:internal/process/execution:118:14
at [eval]-wrapper:6:24
at runScript (node:internal/process/execution:101:62)
at evalScript (node:internal/process/execution:136:3)
at node:internal/main/eval_string:49:3
--disable-wasm-trap-handler
отключает эту оптимизацию, чтобы пользователи могли хотя бы запускать WebAssembly (с менее оптимальной производительностью), когда пространство виртуальной памяти, доступное их процессу Node.js, меньше, чем требуется области памяти V8 WebAssembly.
--disallow-code-generation-from-strings
Добавлено в версии: v9.8.0
Заставляет встроенные языковые функции, такие как eval
и new Function
, которые генерируют код из строк, вместо этого выбрасывать исключение. Это не влияет на модуль Node.js node:vm
.
--dns-result-order=order
[История]
Версия | Изменения |
---|---|
v22.1.0, v20.13.0 | Теперь поддерживается ipv6first . |
v17.0.0 | Значение по умолчанию изменено на verbatim . |
v16.4.0, v14.18.0 | Добавлено в версиях: v16.4.0, v14.18.0 |
Устанавливает значение по умолчанию для order
в dns.lookup()
и dnsPromises.lookup()
. Значение может быть:
ipv4first
: устанавливает значение по умолчаниюorder
наipv4first
.ipv6first
: устанавливает значение по умолчаниюorder
наipv6first
.verbatim
: устанавливает значение по умолчаниюorder
наverbatim
.
Значение по умолчанию — verbatim
, и dns.setDefaultResultOrder()
имеет более высокий приоритет, чем --dns-result-order
.
--enable-fips
Добавлено в: v6.0.0
Включает криптографию, совместимую с FIPS, при запуске. (Требует, чтобы Node.js был собран с использованием совместимого с FIPS OpenSSL.)
--enable-network-family-autoselection
Добавлено в: v18.18.0
Включает алгоритм автоматического выбора семейства, если только параметры подключения явно его не отключают.
--enable-source-maps
[История]
Версия | Изменения |
---|---|
v15.11.0, v14.18.0 | Этот API больше не является экспериментальным. |
v12.12.0 | Добавлено в: v12.12.0 |
Включает поддержку Source Map v3 для трассировок стека.
При использовании транспилятора, такого как TypeScript, трассировки стека, сгенерированные приложением, ссылаются на транспилированный код, а не на исходную позицию. --enable-source-maps
включает кеширование Source Maps и прилагает все усилия для сообщения о трассировках стека относительно исходного файла.
Переопределение Error.prepareStackTrace
может помешать --enable-source-maps
изменить трассировку стека. Вызовите и верните результаты оригинального Error.prepareStackTrace
в переопределяющей функции, чтобы изменить трассировку стека с помощью source maps.
const originalPrepareStackTrace = Error.prepareStackTrace
Error.prepareStackTrace = (error, trace) => {
// Изменить ошибку и трассировку и отформатировать трассировку стека с помощью
// оригинального Error.prepareStackTrace.
return originalPrepareStackTrace(error, trace)
}
Обратите внимание, что включение source maps может вызвать задержку в вашем приложении при обращении к Error.stack
. Если вы часто обращаетесь к Error.stack
в своем приложении, учитывайте влияние на производительность --enable-source-maps
.
--entry-url
Добавлено в: v23.0.0
[Стабильность: 1 - Экспериментально]
Стабильность: 1 Стабильность: 1 - Экспериментально
При наличии Node.js будет интерпретировать точку входа как URL, а не как путь.
Следует правилам разрешения модулей ECMAScript.
Любой параметр запроса или хэш в URL будут доступны через import.meta.url
.
node --entry-url 'file:///path/to/file.js?queryparams=work#and-hashes-too'
node --entry-url --experimental-strip-types 'file.ts?query#hash'
node --entry-url 'data:text/javascript,console.log("Hello")'
--env-file-if-exists=config
Добавлено в: v22.9.0
Поведение такое же, как у --env-file
, но ошибка не выдается, если файл не существует.
--env-file=config
[Стабильно: 1 - Экспериментальная]
Стабильно: 1 Стабильность: 1.1 - Активная разработка
[История]
Версия | Изменения |
---|---|
v21.7.0, v20.12.0 | Добавлена поддержка многострочных значений. |
v20.6.0 | Добавлено в: v20.6.0 |
Загружает переменные окружения из файла относительно текущего каталога, делая их доступными для приложений в process.env
. Переменные окружения, которые настраивают Node.js, такие как NODE_OPTIONS
, анализируются и применяются. Если одна и та же переменная определена в окружении и в файле, значение из окружения имеет приоритет.
Можно передать несколько аргументов --env-file
. Последующие файлы переопределяют ранее существовавшие переменные, определенные в предыдущих файлах.
Ошибка выдается, если файл не существует.
node --env-file=.env --env-file=.development.env index.js
Формат файла должен быть таким: одна строка на пару ключ-значение имени переменной окружения и значения, разделенных символом =
:
PORT=3000
Любой текст после #
считается комментарием:
# Это комментарий {#--env-file=config}
PORT=3000 # Это тоже комментарий
Значения могут начинаться и заканчиваться следующими кавычками: ```, "
или'
. Они опускаются из значений.
USERNAME="nodejs" # результатом будет `nodejs` в качестве значения.
Поддерживаются многострочные значения:
MULTI_LINE="ЭТО
МНОГОСТРОЧНОЕ"
# результатом будет `ЭТО\nМНОГОСТРОЧНОЕ` в качестве значения. {#this-is-a-comment}
Ключевое слово export
перед ключом игнорируется:
export USERNAME="nodejs" # результатом будет `nodejs` в качестве значения.
Если вы хотите загрузить переменные окружения из файла, который может не существовать, вы можете использовать флаг --env-file-if-exists
вместо этого.
-e
, --eval "script"
{#will-result-in-this-is\na-multiline-as-the-value}
[История]
Версия | Изменения |
---|---|
v22.6.0 | Eval теперь поддерживает экспериментальное удаление типов. |
v5.11.0 | Встроенные библиотеки теперь доступны как предопределенные переменные. |
v0.5.2 | Добавлено в: v0.5.2 |
Выполнить следующий аргумент как JavaScript. Модули, которые предопределены в REPL, также можно использовать в script
.
В Windows, при использовании cmd.exe
, одинарная кавычка не будет работать корректно, потому что она распознает только двойные кавычки "
для заключения в кавычки. В Powershell или Git bash можно использовать как '
, так и "
.
Возможно запустить код, содержащий встроенные типы, передав --experimental-strip-types
.
--experimental-async-context-frame
Добавлено в: v22.7.0
[Стабильность: 1 - Экспериментальная]
Стабильность: 1 Стабильность: 1 - Экспериментальная
Включает использование AsyncLocalStorage
, поддерживаемого AsyncContextFrame
, а не реализацией по умолчанию, которая опирается на async_hooks. Эта новая модель реализована совершенно по-другому, поэтому могут быть различия в том, как данные контекста перемещаются внутри приложения. Поэтому в настоящее время рекомендуется убедиться, что на поведение вашего приложения не повлияют эти изменения, прежде чем использовать его в рабочей среде.
--experimental-eventsource
Добавлено в: v22.3.0, v20.18.0
Включить экспозицию EventSource Web API в глобальной области видимости.
--experimental-import-meta-resolve
[История]
Версия | Изменения |
---|---|
v20.6.0, v18.19.0 | синхронный import.meta.resolve доступен по умолчанию, с сохранением флага для включения экспериментального второго аргумента, как поддерживалось ранее. |
v13.9.0, v12.16.2 | Добавлено в: v13.9.0, v12.16.2 |
Включить экспериментальную поддержку родительского URL-адреса import.meta.resolve()
, которая позволяет передавать второй аргумент parentURL
для контекстного разрешения.
Ранее определяла всю функцию import.meta.resolve
.
--experimental-loader=module
[История]
Версия | Изменения |
---|---|
v12.11.1 | Этот флаг был переименован с --loader на --experimental-loader . |
v8.8.0 | Добавлено в: v8.8.0 |
Укажите module
, содержащий экспортированные хуки настройки модулей. module
может быть любой строкой, принимаемой как спецификатор import
.
--experimental-network-inspection
Добавлено в: v22.6.0, v20.18.0
[Стабильность: 1 - Экспериментальная]
Стабильность: 1 Стабильность: 1 - Экспериментальная
Включить экспериментальную поддержку сетевой инспекции с помощью Chrome DevTools.
--experimental-print-required-tla
Добавлено в: v22.0.0, v20.17.0
Если модуль ES, который используется в require()
, содержит await
верхнего уровня, этот флаг позволяет Node.js оценить модуль, попытаться найти ожидания верхнего уровня и напечатать их местоположение, чтобы помочь пользователям их найти.
--experimental-require-module
[История]
Версия | Изменения |
---|---|
v23.0.0 | Теперь это значение по умолчанию. |
v22.0.0, v20.17.0 | Добавлено в: v22.0.0, v20.17.0 |
[Стабильность: 1 - Экспериментальная]
Стабильность: 1 Стабильность: 1.1 - Активная разработка
Поддерживает загрузку синхронного графа модулей ES в require()
.
См. Загрузка модулей ECMAScript с помощью require()
.
--experimental-sea-config
Добавлено в: v20.0.0
[Стабильность: 1 - Экспериментальная]
Стабильность: 1 Стабильность: 1 - Экспериментальная
Используйте этот флаг для генерации блоба, который может быть внедрен в бинарный файл Node.js для создания единого исполняемого приложения. См. документацию об этой конфигурации для получения подробностей.
--experimental-shadow-realm
Добавлено в: v19.0.0, v18.13.0
Используйте этот флаг для включения поддержки ShadowRealm.
--experimental-strip-types
Добавлено в: v22.6.0
[Стабильность: 1 - Экспериментальная]
Стабильность: 1 Стабильность: 1.1 - Активная разработка
Включить экспериментальное удаление типов для файлов TypeScript. Для получения дополнительной информации смотрите документацию по удалению типов TypeScript.
--experimental-test-coverage
[История]
Версия | Изменения |
---|---|
v20.1.0, v18.17.0 | Эта опция может использоваться с --test . |
v19.7.0, v18.15.0 | Добавлено в: v19.7.0, v18.15.0 |
При использовании совместно с модулем node:test
отчет о покрытии кода генерируется как часть вывода средства запуска тестов. Если тесты не выполняются, отчет о покрытии не создается. Подробнее смотрите документацию о сборе покрытия кода из тестов.
--experimental-test-isolation=mode
Добавлено в: v22.8.0
[Стабильность: 1 - Экспериментальная]
Стабильность: 1 Стабильность: 1.0 - Ранняя разработка
Настраивает тип изоляции тестов, используемый в средстве запуска тестов. Когда mode
равно 'process'
, каждый файл теста запускается в отдельном дочернем процессе. Когда mode
равно 'none'
, все файлы теста запускаются в том же процессе, что и средство запуска тестов. Режим изоляции по умолчанию - 'process'
. Этот флаг игнорируется, если флаг --test
отсутствует. Дополнительную информацию см. в разделе модель выполнения средства запуска тестов.
--experimental-test-module-mocks
Добавлено в: v22.3.0, v20.18.0
[Стабильность: 1 - Экспериментальная]
Стабильность: 1 Стабильность: 1.0 - Ранняя разработка
Включить имитацию модулей в средстве запуска тестов.
--experimental-transform-types
Добавлено в: v22.7.0
[Стабильность: 1 - Экспериментальная]
Стабильность: 1 Стабильность: 1.1 - Активная разработка
Включает преобразование синтаксиса только TypeScript в код JavaScript. Подразумевает --experimental-strip-types
и --enable-source-maps
.
--experimental-vm-modules
Добавлено в: v9.6.0
Включает экспериментальную поддержку модулей ES в модуле node:vm
.
--experimental-wasi-unstable-preview1
[История]
Версия | Изменения |
---|---|
v20.0.0, v18.17.0 | Этот параметр больше не требуется, так как WASI включен по умолчанию, но его все еще можно передать. |
v13.6.0 | изменено с --experimental-wasi-unstable-preview0 на --experimental-wasi-unstable-preview1 . |
v13.3.0, v12.16.0 | Добавлено в: v13.3.0, v12.16.0 |
Включает экспериментальную поддержку WebAssembly System Interface (WASI).
--experimental-wasm-modules
Добавлено в: v12.3.0
Включает экспериментальную поддержку модулей WebAssembly.
--experimental-webstorage
Добавлено в: v22.4.0
Включает экспериментальную поддержку Web Storage
.
--expose-gc
Добавлено в: v22.3.0, v20.18.0
[Стабильность: 1 - Экспериментальная]
Стабильность: 1 Стабильность: 1 - Экспериментальная. Этот флаг унаследован от V8 и может быть изменен в вышестоящем проекте.
Этот флаг откроет расширение gc из V8.
if (globalThis.gc) {
globalThis.gc()
}
--force-context-aware
Добавлено в: v12.12.0
Отключает загрузку нативных аддонов, которые не являются контекстно-зависимыми.
--force-fips
Добавлено в: v6.0.0
Принудительное включение криптографии, совместимой с FIPS, при запуске. (Не может быть отключено из кода скрипта.) (Те же требования, что и у --enable-fips
.)
--force-node-api-uncaught-exceptions-policy
Добавлено в: v18.3.0, v16.17.0
Принудительно применяет событие uncaughtException
для асинхронных обратных вызовов Node-API.
Чтобы предотвратить сбой процесса из-за существующего аддона, этот флаг не включен по умолчанию. В будущем этот флаг будет включен по умолчанию для обеспечения правильного поведения.
--frozen-intrinsics
Добавлено в: v11.12.0
[Стабильность: 1 - Экспериментально]
Стабильность: 1 Стабильность: 1 - Экспериментально
Включает экспериментальные замороженные внутренние объекты, такие как Array
и Object
.
Поддерживается только корневой контекст. Нет гарантии, что globalThis.Array
действительно является ссылкой на внутренний объект по умолчанию. Код может сломаться при использовании этого флага.
Чтобы разрешить добавление полифилов, --require
и --import
запускаются до заморозки внутренних объектов.
--heap-prof
[История]
Версия | Изменения |
---|---|
v22.4.0, v20.16.0 | Флаги --heap-prof теперь являются стабильными. |
v12.4.0 | Добавлено в: v12.4.0 |
[Стабильность: 2 - Стабильно]
Стабильность: 2 Стабильность: 2 - Стабильно
Запускает профилировщик кучи 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
--heap-prof-dir
[История]
Версия | Изменения |
---|---|
v22.4.0, v20.16.0 | Флаги --heap-prof теперь являются стабильными. |
v12.4.0 | Добавлено в: v12.4.0 |
[Стабильность: 2 - Стабильно]
Стабильность: 2 Стабильность: 2 - Стабильно
Указывает каталог, в который будут помещаться профили кучи, сгенерированные --heap-prof
.
Значение по умолчанию контролируется параметром командной строки --diagnostic-dir
.
--heap-prof-interval
[История]
Версия | Изменения |
---|---|
v22.4.0, v20.16.0 | Флаги --heap-prof теперь являются стабильными. |
v12.4.0 | Добавлено в: v12.4.0 |
[Стабильность: 2 - Стабильно]
Стабильность: 2 Стабильность: 2 - Стабильно
Указывает средний интервал выборки в байтах для профилей кучи, сгенерированных --heap-prof
. Значение по умолчанию — 512 * 1024 байта.
--heap-prof-name
[История]
Версия | Изменения |
---|---|
v22.4.0, v20.16.0 | Флаги --heap-prof теперь стабильны. |
v12.4.0 | Добавлено в: v12.4.0 |
[Стабильно: 2 - Стабильно]
Стабильно: 2 Стабильность: 2 - Стабильно
Укажите имя файла профиля кучи, создаваемого с помощью --heap-prof
.
--heapsnapshot-near-heap-limit=max_count
Добавлено в: v15.1.0, v14.18.0
[Стабильно: 1 - Экспериментально]
Стабильно: 1 Стабильность: 1 - Экспериментально
Записывает снимок кучи V8 на диск, когда использование кучи V8 приближается к лимиту кучи. count
должно быть неотрицательным целым числом (в этом случае Node.js запишет на диск не более max_count
снимков).
При создании снимков может быть запущена сборка мусора, что приведет к снижению использования кучи. Поэтому несколько снимков могут быть записаны на диск, прежде чем у экземпляра Node.js окончательно закончится память. Эти снимки кучи можно сравнить, чтобы определить, какие объекты выделяются во время создания последовательных снимков. Не гарантируется, что Node.js запишет ровно max_count
снимков на диск, но он сделает все возможное, чтобы сгенерировать по крайней мере один и до max_count
снимков до того, как у экземпляра Node.js закончится память, когда max_count
больше 0.
Генерация снимков V8 требует времени и памяти (как памяти, управляемой кучей V8, так и собственной памяти вне кучи V8). Чем больше куча, тем больше ресурсов ей требуется. Node.js настроит кучу V8, чтобы учесть дополнительные накладные расходы памяти кучи V8, и сделает все возможное, чтобы избежать использования всей памяти, доступной процессу. Когда процесс использует больше памяти, чем система считает нужным, процесс может быть внезапно завершен системой, в зависимости от конфигурации системы.
$ node --max-old-space-size=100 --heapsnapshot-near-heap-limit=3 index.js
Снимок записан в Heap.20200430.100036.49580.0.001.heapsnapshot
Снимок записан в Heap.20200430.100037.49580.0.002.heapsnapshot
Снимок записан в Heap.20200430.100038.49580.0.003.heapsnapshot
<--- Последние несколько GC --->
[49580:0x110000000] 4826 мс: Mark-sweep 130.6 (147.8) -> 130.5 (147.8) MB, 27.4 / 0.0 мс (среднее mu = 0.126, текущее mu = 0.034) выделение не удалось очистить, может не удаться
[49580:0x110000000] 4845 мс: Mark-sweep 130.6 (147.8) -> 130.6 (147.8) MB, 18.8 / 0.0 мс (среднее mu = 0.088, текущее mu = 0.031) выделение не удалось очистить, может не удаться
<--- Стек JS --->
КРИТИЧЕСКАЯ ОШИБКА: Неэффективные уплотнения меток рядом с лимитом кучи Ошибка выделения - нехватка памяти кучи JavaScript
....
--heapsnapshot-signal=сигнал
Добавлено в: v12.0.0
Включает обработчик сигналов, который заставляет процесс Node.js записывать дамп кучи при получении указанного сигнала. сигнал
должен быть допустимым именем сигнала. По умолчанию отключено.
$ 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
-h
, --help
Добавлено в: v0.1.3
Вывести параметры командной строки node. Вывод этой опции менее подробный, чем этот документ.
--icu-data-dir=файл
Добавлено в: v0.11.15
Указать путь загрузки данных ICU. (Переопределяет NODE_ICU_DATA
.)
--import=модуль
Добавлено в: v19.0.0, v18.18.0
[Стабильность: 1 - Экспериментальный]
Стабильность: 1 Стабильность: 1 - Экспериментальный
Предварительно загрузить указанный модуль при запуске. Если флаг указан несколько раз, каждый модуль будет выполняться последовательно в порядке их появления, начиная с тех, которые указаны в NODE_OPTIONS
.
Соблюдает правила разрешения модулей ECMAScript. Используйте --require
для загрузки модуля CommonJS. Модули, предварительно загруженные с помощью --require
, будут выполняться перед модулями, предварительно загруженными с помощью --import
.
Модули предварительно загружаются в основной поток, а также в любые рабочие потоки, разветвленные процессы или кластерные процессы.
--input-type=тип
Добавлено в: v12.0.0
Это настраивает Node.js для интерпретации ввода --eval
или STDIN
как CommonJS или как модуля ES. Допустимые значения: "commonjs"
или "module"
. По умолчанию используется "commonjs"
.
REPL не поддерживает эту опцию. Использование --input-type=module
с --print
вызовет ошибку, так как --print
не поддерживает синтаксис модулей ES.
--insecure-http-parser
Добавлено в: v13.4.0, v12.15.0, v10.19.0
Включает флаги нестрогого разбора HTTP. Это может обеспечить совместимость с не соответствующими стандартам реализациями HTTP.
При включении парсер будет принимать следующее:
- Недопустимые значения HTTP-заголовков.
- Недопустимые версии HTTP.
- Разрешить сообщения, содержащие заголовки
Transfer-Encoding
иContent-Length
. - Разрешить дополнительные данные после сообщения, если присутствует
Connection: close
. - Разрешить дополнительные кодировки передачи после того, как предоставлен
chunked
. - Разрешить использование
\n
в качестве разделителя токенов вместо\r\n
. - Разрешить отсутствие
\r\n
после блока. - Разрешить пробелы после размера блока и перед
\r\n
.
Все вышеперечисленное подвергнет ваше приложение атакам с контрабандой запросов или отравлением. Избегайте использования этой опции.
Предупреждение: привязка инспектора к публичной комбинации IP:порт небезопасна
Привязка инспектора к публичному IP-адресу (включая 0.0.0.0
) с открытым портом небезопасна, поскольку позволяет внешним хостам подключаться к инспектору и выполнять атаки удаленного выполнения кода.
При указании хоста убедитесь, что либо:
- Хост недоступен из общедоступных сетей.
- Брандмауэр запрещает нежелательные подключения к порту.
В частности, --inspect=0.0.0.0
небезопасен, если порт (9229
по умолчанию) не защищен брандмауэром.
См. раздел последствия безопасности отладки для получения дополнительной информации.
--inspect-brk[=[host:]port]
Добавлено в: v7.6.0
Активирует инспектор на host:port
и останавливается в начале пользовательского скрипта. По умолчанию host:port
— 127.0.0.1:9229
. Если указан порт 0
, будет использован случайный доступный порт.
См. Интеграция V8 Inspector для Node.js для дальнейшего объяснения отладчика Node.js.
--inspect-port=[host:]port
Добавлено в: v7.6.0
Устанавливает host:port
, который будет использоваться при активации инспектора. Полезно при активации инспектора отправкой сигнала SIGUSR1
.
Хост по умолчанию — 127.0.0.1
. Если указан порт 0
, будет использован случайный доступный порт.
См. предупреждение о безопасности ниже относительно использования параметра host
.
--inspect-publish-uid=stderr,http
Указывает способы публикации URL-адреса веб-сокета инспектора.
По умолчанию URL-адрес веб-сокета инспектора доступен в stderr и по адресу /json/list
в конечной точке http://host:port/json/list
.
--inspect-wait[=[host:]port]
Добавлено в: v22.2.0, v20.15.0
Активировать инспектор на host:port
и ждать подключения отладчика. По умолчанию host:port
— 127.0.0.1:9229
. Если указан порт 0
, будет использоваться случайный доступный порт.
См. Интеграция V8 Inspector для Node.js для дальнейшего объяснения отладчика Node.js.
--inspect[=[host:]port]
Добавлено в: v6.3.0
Активировать инспектор на host:port
. По умолчанию — 127.0.0.1:9229
. Если указан порт 0
, будет использоваться случайный доступный порт.
Интеграция V8 Inspector позволяет таким инструментам, как Chrome DevTools и IDE, отлаживать и профилировать экземпляры Node.js. Инструменты подключаются к экземплярам Node.js через TCP-порт и взаимодействуют, используя протокол Chrome DevTools. См. Интеграция V8 Inspector для Node.js для дальнейшего объяснения отладчика Node.js.
-i
, --interactive
Добавлено в: v0.7.7
Открывает REPL, даже если stdin, по-видимому, не является терминалом.
--jitless
Добавлено в: v12.0.0
[Стабильно: 1 - Экспериментально]
Стабильно: 1 Стабильность: 1 - Экспериментально. Этот флаг унаследован от V8 и может быть изменен вышестоящим проектом.
Отключить выделение исполняемой памяти во время выполнения. Это может потребоваться на некоторых платформах из соображений безопасности. Это также может уменьшить поверхность атаки на других платформах, но влияние на производительность может быть значительным.
--localstorage-file=file
Добавлено в: v22.4.0
Файл, используемый для хранения данных localStorage
. Если файл не существует, он создается при первом обращении к localStorage
. Один и тот же файл может совместно использоваться несколькими процессами Node.js одновременно. Этот флаг не действует, если Node.js не запущен с флагом --experimental-webstorage
.
--max-http-header-size=size
[История]
Версия | Изменения |
---|---|
v13.13.0 | Изменен максимальный размер HTTP-заголовков по умолчанию с 8 КБ до 16 КБ. |
v11.6.0, v10.15.0 | Добавлено в: v11.6.0, v10.15.0 |
Указывает максимальный размер HTTP-заголовков в байтах. По умолчанию 16 КБ.
--napi-modules
Добавлено в: v7.10.0
Этот параметр не имеет эффекта. Он сохранен для совместимости.
--network-family-autoselection-attempt-timeout
Добавлено в: v22.1.0, v20.13.0
Устанавливает значение по умолчанию для тайм-аута попытки автоматического выбора семейства сети. Для получения дополнительной информации см. net.getDefaultAutoSelectFamilyAttemptTimeout()
.
--no-addons
Добавлено в: v16.10.0, v14.19.0
Отключает условие экспорта node-addons
, а также отключает загрузку нативных дополнений. Если указан параметр --no-addons
, вызов process.dlopen
или требование нативного дополнения C++ завершится с ошибкой и вызовет исключение.
--no-deprecation
Добавлено в: v0.8.0
Отключает предупреждения об устаревании.
--no-experimental-detect-module
[История]
Версия | Изменения |
---|---|
v22.7.0 | Обнаружение синтаксиса включено по умолчанию. |
v21.1.0, v20.10.0 | Добавлено в: v21.1.0, v20.10.0 |
Отключает использование обнаружения синтаксиса для определения типа модуля.
--no-experimental-global-navigator
Добавлено в: v21.2.0
[Стабильность: 1 - Экспериментальное]
Стабильность: 1 Стабильность: 1 - Экспериментальное
Отключает представление Navigator API в глобальной области видимости.
--no-experimental-repl-await
Добавлено в: v16.6.0
Используйте этот флаг, чтобы отключить ожидание верхнего уровня в REPL.
--no-experimental-require-module
[История]
Версия | Изменения |
---|---|
v23.0.0 | Теперь по умолчанию false. |
v22.0.0, v20.17.0 | Добавлено в: v22.0.0, v20.17.0 |
[Стабильность: 1 - Экспериментальное]
Стабильность: 1 Стабильность: 1.1 - Активная разработка
Отключает поддержку загрузки синхронного графа модулей ES в require()
.
См. Загрузка модулей ECMAScript с помощью require()
.
--no-experimental-sqlite
[История]
Версия | Изменения |
---|---|
v23.4.0 | SQLite больше не помечен как экспериментальный, но все еще находится в экспериментальной стадии. |
v22.5.0 | Добавлено в: v22.5.0 |
Отключает экспериментальный модуль node:sqlite
.
--no-experimental-websocket
Добавлено в: v22.0.0
Отключает доступность WebSocket
в глобальной области видимости.
--no-extra-info-on-fatal-exception
Добавлено в: v17.0.0
Скрывает дополнительную информацию о фатальном исключении, которое приводит к завершению работы.
--no-force-async-hooks-checks
Добавлено в: v9.0.0
Отключает проверки времени выполнения для async_hooks
. Они по-прежнему будут динамически включены при включении async_hooks
.
--no-global-search-paths
Добавлено в: v16.10.0
Не искать модули в глобальных путях, таких как $HOME/.node_modules
и $NODE_PATH
.
--no-network-family-autoselection
[История]
Версия | Изменения |
---|---|
v20.0.0 | Флаг был переименован с --no-enable-network-family-autoselection на --no-network-family-autoselection . Старое название по-прежнему может работать как псевдоним. |
v19.4.0 | Добавлено в: v19.4.0 |
Отключает алгоритм автоматического выбора семейства, если только параметры подключения явно не включают его.
--no-warnings
Добавлено в: v6.0.0
Отключает все предупреждения процесса (включая устаревания).
--node-memory-debug
Добавлено в: v15.0.0, v14.18.0
Включает дополнительные проверки отладки на наличие утечек памяти во внутренних компонентах Node.js. Это обычно полезно только разработчикам, отлаживающим сам Node.js.
--openssl-config=file
Добавлено в: v6.9.0
Загружает файл конфигурации OpenSSL при запуске. Помимо прочего, это можно использовать для включения криптографии, совместимой с FIPS, если Node.js построен с использованием OpenSSL с поддержкой FIPS.
--openssl-legacy-provider
Добавлено в: v17.0.0, v16.17.0
Включает устаревший провайдер OpenSSL 3.0. Для получения дополнительной информации см. OSSL_PROVIDER-legacy.
--openssl-shared-config
Добавлено в: v18.5.0, v16.17.0, v14.21.0
Включает раздел конфигурации OpenSSL по умолчанию, openssl_conf
, для чтения из файла конфигурации OpenSSL. Файл конфигурации по умолчанию называется openssl.cnf
, но это можно изменить, используя переменную среды OPENSSL_CONF
или с помощью параметра командной строки --openssl-config
. Расположение файла конфигурации OpenSSL по умолчанию зависит от того, как OpenSSL связан с Node.js. Совместное использование конфигурации OpenSSL может иметь нежелательные последствия, и рекомендуется использовать раздел конфигурации, специфичный для Node.js, который называется nodejs_conf
и используется по умолчанию, когда этот параметр не используется.
--pending-deprecation
Добавлено в: v8.0.0
Выводить предупреждения об отложенном устаревании.
Отложенные устаревания в целом идентичны устареванию во время выполнения, за исключением того, что они по умолчанию отключены и не будут выводиться, если не установлен флаг командной строки --pending-deprecation
или переменная среды NODE_PENDING_DEPRECATION=1
. Отложенные устаревания используются для предоставления своего рода селективного механизма «раннего предупреждения», который разработчики могут использовать для обнаружения использования устаревшего API.
--permission
[История]
Версия | Изменения |
---|---|
v23.5.0 | Модель разрешений теперь является стабильной. |
v20.0.0 | Добавлено в: v20.0.0 |
[Стабильность: 2 - Стабильно]
Стабильность: 2 Стабильность: 2 - Стабильно.
Включить модель разрешений для текущего процесса. Когда включено, следующие разрешения ограничены:
- Файловая система - управляется с помощью флагов
--allow-fs-read
,--allow-fs-write
- Дочерний процесс - управляется с помощью флага
--allow-child-process
- Рабочие потоки - управляются с помощью флага
--allow-worker
- WASI - управляется с помощью флага
--allow-wasi
- Аддоны - управляются с помощью флага
--allow-addons
--preserve-symlinks
Добавлено в: v6.3.0
Указывает загрузчику модулей сохранять символические ссылки при разрешении и кэшировании модулей.
По умолчанию, когда Node.js загружает модуль из пути, который символически связан с другим расположением на диске, Node.js будет разрешать ссылку и использовать фактический «реальный путь» модуля на диске как идентификатор и как корневой путь для поиска других зависимых модулей. В большинстве случаев такое поведение по умолчанию приемлемо. Однако при использовании символически связанных одноранговых зависимостей, как показано в примере ниже, поведение по умолчанию вызывает исключение, если moduleA
пытается потребовать moduleB
в качестве одноранговой зависимости:
{appDir}
├── app
│ ├── index.js
│ └── node_modules
│ ├── moduleA -> {appDir}/moduleA
│ └── moduleB
│ ├── index.js
│ └── package.json
└── moduleA
├── index.js
└── package.json
Флаг командной строки --preserve-symlinks
указывает Node.js использовать путь символической ссылки для модулей, а не реальный путь, что позволяет находить символически связанные одноранговые зависимости.
Однако обратите внимание, что использование --preserve-symlinks
может иметь и другие побочные эффекты. В частности, символически связанные нативные модули могут не загрузиться, если они связаны более чем из одного места в дереве зависимостей (Node.js будет рассматривать их как два отдельных модуля и попытается загрузить модуль несколько раз, что приведет к возникновению исключения).
Флаг --preserve-symlinks
не применяется к основному модулю, что позволяет работать node --preserve-symlinks node_module/.bin/\<foo\>
. Чтобы применить такое же поведение к основному модулю, также используйте --preserve-symlinks-main
.
--preserve-symlinks-main
Добавлено в: v10.2.0
Указывает загрузчику модулей сохранять символические ссылки при разрешении и кэшировании главного модуля (require.main
).
Этот флаг существует для того, чтобы основной модуль мог быть включен в то же поведение, которое --preserve-symlinks
предоставляет всем другим импортам; однако это отдельные флаги для обратной совместимости со старыми версиями Node.js.
--preserve-symlinks-main
не подразумевает --preserve-symlinks
; используйте --preserve-symlinks-main
в дополнение к --preserve-symlinks
, когда нежелательно переходить по символическим ссылкам перед разрешением относительных путей.
Смотрите --preserve-symlinks
для получения дополнительной информации.
-p
, --print "script"
[История]
Версия | Изменения |
---|---|
v5.11.0 | Встроенные библиотеки теперь доступны в виде предопределенных переменных. |
v0.6.4 | Добавлено в: v0.6.4 |
Идентично -e
, но выводит результат.
--prof
Добавлено в: v2.0.0
Генерировать вывод профилировщика V8.
--prof-process
Добавлено в: v5.2.0
Обработать вывод профилировщика V8, сгенерированный с использованием опции V8 --prof
.
--redirect-warnings=file
Добавлено в: v8.0.0
Записывает предупреждения процесса в указанный файл вместо вывода на stderr. Файл будет создан, если он не существует, и будет дополнен, если он существует. Если при попытке записи предупреждения в файл произошла ошибка, предупреждение будет записано в stderr.
Имя файла
может быть абсолютным путем. Если это не так, то каталог по умолчанию, в который он будет записан, контролируется параметром командной строки --diagnostic-dir
.
--report-compact
Добавлено в: v13.12.0, v12.17.0
Записывать отчеты в компактном формате, однострочном JSON, который легче обрабатывать системами обработки журналов, чем многострочный формат по умолчанию, предназначенный для потребления человеком.
--report-dir=directory
, report-directory=directory
[История]
Версия | Изменения |
---|---|
v13.12.0, v12.17.0 | Эта опция больше не является экспериментальной. |
v12.0.0 | Изменено с --diagnostic-report-directory на --report-directory . |
v11.8.0 | Добавлено в: v11.8.0 |
Место, где будет сгенерирован отчет.
--report-exclude-env
Добавлено в: v23.3.0
Когда передается --report-exclude-env
, сгенерированный диагностический отчет не будет содержать данные environmentVariables
.
--report-exclude-network
Добавлено в: v22.0.0, v20.13.0
Исключает header.networkInterfaces
из диагностического отчета. По умолчанию это не задано, и сетевые интерфейсы включаются.
--report-filename=filename
[История]
Версия | Изменения |
---|---|
v13.12.0, v12.17.0 | Эта опция больше не является экспериментальной. |
v12.0.0 | изменено с --diagnostic-report-filename на --report-filename . |
v11.8.0 | Добавлено в: v11.8.0 |
Имя файла, в который будет записан отчет.
Если имя файла установлено в 'stdout'
или 'stderr'
, отчет записывается в stdout или stderr процесса соответственно.
--report-on-fatalerror
[История]
Версия | Изменения |
---|---|
v14.0.0, v13.14.0, v12.17.0 | Эта опция больше не является экспериментальной. |
v12.0.0 | изменено с --diagnostic-report-on-fatalerror на --report-on-fatalerror . |
v11.8.0 | Добавлено в: v11.8.0 |
Включает создание отчета при фатальных ошибках (внутренних ошибках в среде выполнения Node.js, таких как нехватка памяти), которые приводят к завершению приложения. Полезно для проверки различных диагностических данных, таких как куча, стек, состояние цикла событий, потребление ресурсов и т. д., чтобы разобраться с фатальной ошибкой.
--report-on-signal
[История]
Версия | Изменения |
---|---|
v13.12.0, v12.17.0 | Эта опция больше не является экспериментальной. |
v12.0.0 | изменено с --diagnostic-report-on-signal на --report-on-signal . |
v11.8.0 | Добавлено в: v11.8.0 |
Включает создание отчета при получении указанного (или предопределенного) сигнала запущенному процессу Node.js. Сигнал для запуска отчета указывается через --report-signal
.
--report-signal=signal
[История]
Версия | Изменения |
---|---|
v13.12.0, v12.17.0 | Эта опция больше не является экспериментальной. |
v12.0.0 | изменено с --diagnostic-report-signal на --report-signal . |
v11.8.0 | Добавлено в: v11.8.0 |
Устанавливает или сбрасывает сигнал для генерации отчета (не поддерживается в Windows). Сигналом по умолчанию является SIGUSR2
.
--report-uncaught-exception
[История]
Версия | Изменения |
---|---|
v18.8.0, v16.18.0 | Отчет не создается, если необработанное исключение обработано. |
v13.12.0, v12.17.0 | Эта опция больше не является экспериментальной. |
v12.0.0 | Изменено с --diagnostic-report-uncaught-exception на --report-uncaught-exception . |
v11.8.0 | Добавлено в: v11.8.0 |
Включает создание отчета, когда процесс завершается из-за необработанного исключения. Полезно при проверке стека JavaScript в сочетании с нативным стеком и другими данными среды выполнения.
-r
, --require module
Добавлено в: v1.6.0
Предварительная загрузка указанного модуля при запуске.
Следует правилам разрешения модулей require()
. module
может быть либо путем к файлу, либо именем модуля node.
Поддерживаются только модули CommonJS. Используйте --import
для предварительной загрузки модуля ECMAScript. Модули, предварительно загруженные с помощью --require
, будут выполняться до модулей, предварительно загруженных с помощью --import
.
Модули предварительно загружаются в основной поток, а также в любые рабочие потоки, форкнутые процессы или кластерные процессы.
--run
[История]
Версия | Изменения |
---|---|
v22.3.0 | Добавлена переменная среды NODE_RUN_SCRIPT_NAME. |
v22.3.0 | Добавлена переменная среды NODE_RUN_PACKAGE_JSON_PATH. |
v22.3.0 | Переходит вверх до корневого каталога и находит файл package.json для запуска команды и соответственно обновляет переменную среды PATH . |
v22.0.0 | Добавлено в: v22.0.0 |
[Стабильно: 2 - Стабильно]
Стабильно: 2 Стабильность: 2 - Стабильно
Это запускает указанную команду из объекта "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
Вы также можете передать аргументы команде. Любой аргумент после --
будет добавлен в скрипт:
$ node --run test -- --verbose
Намеренные ограничения
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
Добавлено в: v15.6.0
При использовании --secure-heap
флаг --secure-heap-min
определяет минимальное выделение из защищенной кучи. Минимальное значение равно 2
. Максимальное значение - наименьшее из --secure-heap
или 2147483647
. Заданное значение должно быть степенью двойки.
--secure-heap=n
Добавлено в: v15.6.0
Инициализирует защищенную кучу OpenSSL размером n
байт. При инициализации защищенная куча используется для выбранных типов выделений в OpenSSL во время генерации ключей и других операций. Это полезно, например, для предотвращения утечки конфиденциальной информации из-за переполнения или недополнения указателя.
Защищенная куча имеет фиксированный размер и не может быть изменена во время выполнения, поэтому, если она используется, важно выбрать достаточно большую кучу, чтобы покрыть все случаи использования приложения.
Размер кучи должен быть степенью двойки. Любое значение меньше 2 отключит защищенную кучу.
Защищенная куча отключена по умолчанию.
Защищенная куча недоступна в Windows.
См. CRYPTO_secure_malloc_init
для получения более подробной информации.
--snapshot-blob=путь
Добавлено в: v18.8.0
[Стабильность: 1 - Экспериментальная]
Стабильность: 1 Стабильность: 1 - Экспериментальная
При использовании с --build-snapshot
, --snapshot-blob
указывает путь, по которому записывается сгенерированный двоичный объект моментального снимка. Если не указано, сгенерированный двоичный объект записывается в snapshot.blob
в текущем рабочем каталоге.
При использовании без --build-snapshot
, --snapshot-blob
указывает путь к двоичному объекту, который используется для восстановления состояния приложения.
При загрузке моментального снимка Node.js проверяет, что:
Если они не совпадают, Node.js отказывается загружать моментальный снимок и завершает работу с кодом состояния 1.
--test
[История]
Версия | Изменения |
---|---|
v20.0.0 | Тестовый движок теперь стабилен. |
v19.2.0, v18.13.0 | Тестовый движок теперь поддерживает запуск в режиме отслеживания. |
v18.1.0, v16.17.0 | Добавлено в: v18.1.0, v16.17.0 |
Запускает командную строку Node.js для тестирования. Этот флаг нельзя использовать с --watch-path
, --check
, --eval
, --interactive
или инспектором. Подробнее смотрите в документации по запуску тестов из командной строки.
--test-concurrency
Добавлено в: v21.0.0, v20.10.0, v18.19.0
Максимальное количество тестовых файлов, которые CLI тестового движка будет выполнять параллельно. Если для --experimental-test-isolation
установлено значение 'none'
, этот флаг игнорируется и параллелизм равен единице. В противном случае параллелизм по умолчанию равен os.availableParallelism() - 1
.
--test-coverage-branches=threshold
Добавлено в: v22.8.0
[Стабильность: 1 - Экспериментальный]
Стабильность: 1 Стабильность: 1 - Экспериментальный
Требует минимальный процент покрытия ветвей. Если покрытие кода не достигает указанного порога, процесс завершится с кодом 1
.
--test-coverage-exclude
Добавлено в: v22.5.0
[Стабильность: 1 - Экспериментальный]
Стабильность: 1 Стабильность: 1 - Экспериментальный
Исключает определенные файлы из покрытия кода, используя шаблон glob, который может соответствовать как абсолютным, так и относительным путям к файлам.
Этот параметр можно указать несколько раз, чтобы исключить несколько шаблонов glob.
Если указаны и --test-coverage-exclude
, и --test-coverage-include
, файлы должны соответствовать обоим критериям, чтобы быть включенными в отчет о покрытии.
По умолчанию все соответствующие тестовые файлы исключаются из отчета о покрытии. Указание этого параметра переопределит поведение по умолчанию.
--test-coverage-functions=threshold
Добавлено в: v22.8.0
[Стабильность: 1 - Экспериментальный]
Стабильность: 1 Стабильность: 1 - Экспериментальный
Требует минимальный процент покрытых функций. Если покрытие кода не достигает указанного порога, процесс завершится с кодом 1
.
--test-coverage-include
Добавлено в: v22.5.0
[Стабильность: 1 - Экспериментально]
Стабильность: 1 Стабильность: 1 - Экспериментально
Включает определенные файлы в покрытие кода, используя шаблон glob, который может соответствовать как абсолютным, так и относительным путям к файлам.
Этот параметр можно указать несколько раз, чтобы включить несколько шаблонов glob.
Если указаны оба параметра --test-coverage-exclude
и --test-coverage-include
, файлы должны соответствовать обоим критериям, чтобы быть включенными в отчет о покрытии.
--test-coverage-lines=threshold
Добавлено в: v22.8.0
[Стабильность: 1 - Экспериментально]
Стабильность: 1 Стабильность: 1 - Экспериментально
Требует минимального процента покрытых строк. Если покрытие кода не достигает указанного порога, процесс завершится с кодом 1
.
--test-force-exit
Добавлено в: v22.0.0, v20.14.0
Настраивает средство запуска тестов на завершение процесса после завершения выполнения всех известных тестов, даже если цикл событий в противном случае останется активным.
--test-name-pattern
[История]
Версия | Изменения |
---|---|
v20.0.0 | Теперь средство запуска тестов стабильно. |
v18.11.0 | Добавлено в: v18.11.0 |
Регулярное выражение, которое настраивает средство запуска тестов на выполнение только тех тестов, имя которых соответствует предоставленному шаблону. Подробности см. в документации по фильтрации тестов по имени.
Если указаны оба параметра --test-name-pattern
и --test-skip-pattern
, тесты должны соответствовать обоим требованиям, чтобы быть выполненными.
--test-only
[История]
Версия | Изменения |
---|---|
v20.0.0 | Теперь средство запуска тестов стабильно. |
v18.0.0, v16.17.0 | Добавлено в: v18.0.0, v16.17.0 |
Настраивает средство запуска тестов на выполнение только тестов верхнего уровня, у которых установлен параметр only
. Этот флаг не требуется, если изоляция тестов отключена.
--test-reporter
[История]
Версия | Изменения |
---|---|
v20.0.0 | Теперь средство запуска тестов стабильно. |
v19.6.0, v18.15.0 | Добавлено в: v19.6.0, v18.15.0 |
Репортер тестов для использования при запуске тестов. Подробности см. в документации по репортерам тестов.
--test-reporter-destination
[История]
Версия | Изменения |
---|---|
v20.0.0 | Тестовый раннер теперь стабилен. |
v19.6.0, v18.15.0 | Добавлено в: v19.6.0, v18.15.0 |
Место назначения для соответствующего тестового репортера. Подробнее см. в документации по тестовым репортерам.
--test-shard
Добавлено в: v20.5.0, v18.19.0
Сегмент тестового набора для выполнения в формате \<индекс\>/\<общее\>
, где
индекс
- положительное целое число, индекс разделенных частей, общее
- положительное целое число, общее количество разделенных частей. Эта команда разделит все файлы тестов на общее
равных частей и запустит только те, которые оказались в части индекса
.
Например, чтобы разделить набор тестов на три части, используйте это:
node --test --test-shard=1/3
node --test --test-shard=2/3
node --test --test-shard=3/3
--test-skip-pattern
Добавлено в: v22.1.0
Регулярное выражение, которое настраивает тестовый раннер на пропуск тестов, имя которых соответствует предоставленному шаблону. Подробнее см. в документации по фильтрации тестов по имени.
Если указаны и --test-name-pattern
, и --test-skip-pattern
, тесты должны удовлетворять обоим требованиям, чтобы быть выполненными.
--test-timeout
Добавлено в: v21.2.0, v20.11.0
Количество миллисекунд, по истечении которых выполнение теста завершится с ошибкой. Если не указано, подтесты наследуют это значение от своего родителя. Значение по умолчанию - Infinity
.
--test-update-snapshots
[История]
Версия | Изменения |
---|---|
v23.4.0 | Тестирование снапшотов больше не является экспериментальным. |
v22.3.0 | Добавлено в: v22.3.0 |
Перегенерирует файлы моментальных снимков, используемые тестовым раннером для тестирования моментальных снимков.
--throw-deprecation
Добавлено в: v0.11.14
Выдавать ошибки для устареваний.
--title=title
Добавлено в: v10.7.0
Установить process.title
при запуске.
--tls-cipher-list=list
Добавлено в: v4.0.0
Укажите альтернативный список шифров TLS по умолчанию. Требует, чтобы Node.js был собран с поддержкой криптографии (по умолчанию).
--tls-keylog=file
Добавлено в: v13.2.0, v12.16.0
Записывает ключевой материал TLS в файл. Ключевой материал находится в формате NSS SSLKEYLOGFILE
и может использоваться программным обеспечением (таким как Wireshark) для расшифровки трафика TLS.
--tls-max-v1.2
Добавлено в: v12.0.0, v10.20.0
Устанавливает tls.DEFAULT_MAX_VERSION
в значение 'TLSv1.2'. Используйте для отключения поддержки TLSv1.3.
--tls-max-v1.3
Добавлено в: v12.0.0
Устанавливает tls.DEFAULT_MAX_VERSION
по умолчанию в значение 'TLSv1.3'. Используйте для включения поддержки TLSv1.3.
--tls-min-v1.0
Добавлено в: v12.0.0, v10.20.0
Устанавливает tls.DEFAULT_MIN_VERSION
по умолчанию в значение 'TLSv1'. Используйте для совместимости со старыми TLS-клиентами или серверами.
--tls-min-v1.1
Добавлено в: v12.0.0, v10.20.0
Устанавливает tls.DEFAULT_MIN_VERSION
по умолчанию в значение 'TLSv1.1'. Используйте для совместимости со старыми TLS-клиентами или серверами.
--tls-min-v1.2
Добавлено в: v12.2.0, v10.20.0
Устанавливает tls.DEFAULT_MIN_VERSION
по умолчанию в значение 'TLSv1.2'. Это значение по умолчанию для версий 12.x и выше, но эта опция поддерживается для совместимости со старыми версиями Node.js.
--tls-min-v1.3
Добавлено в: v12.0.0
Устанавливает tls.DEFAULT_MIN_VERSION
по умолчанию в значение 'TLSv1.3'. Используйте для отключения поддержки TLSv1.2, который не так безопасен, как TLSv1.3.
--trace-deprecation
Добавлено в: v0.8.0
Печатать трассировки стека для устареваний.
--trace-env
Добавлено в: v23.4.0
Выводит в stderr информацию о любом доступе к переменным окружения, выполненном в текущем экземпляре Node.js, включая:
- Чтения переменных окружения, которые Node.js выполняет внутренне.
- Записи в виде
process.env.KEY = "SOME VALUE"
. - Чтения в виде
process.env.KEY
. - Определения в виде
Object.defineProperty(process.env, 'KEY', {...})
. - Запросы в виде
Object.hasOwn(process.env, 'KEY')
,process.env.hasOwnProperty('KEY')
или'KEY' in process.env
. - Удаления в виде
delete process.env.KEY
. - Перечисления в виде
...process.env
илиObject.keys(process.env)
.
Печатаются только имена переменных окружения, к которым происходит обращение. Значения не печатаются.
Чтобы распечатать трассировку стека доступа, используйте --trace-env-js-stack
и/или --trace-env-native-stack
.
--trace-env-js-stack
Добавлено в: v23.4.0
В дополнение к тому, что делает --trace-env
, печатает трассировку стека JavaScript при доступе.
--trace-env-native-stack
Добавлено в: v23.4.0
В дополнение к тому, что делает --trace-env
, печатает трассировку нативного стека при доступе.
--trace-event-categories
Добавлено в: v7.7.0
Список категорий через запятую, которые должны быть трассированы, когда трассировка событий включена с помощью --trace-events-enabled
.
--trace-event-file-pattern
Добавлено в: v9.8.0
Строка шаблона, указывающая путь к файлу для данных трассировки событий, поддерживает ${rotation}
и ${pid}
.
--trace-events-enabled
Добавлено в: v7.7.0
Включает сбор информации о трассировке событий.
--trace-exit
Добавлено в: v13.5.0, v12.16.0
Печатает трассировку стека всякий раз, когда происходит принудительный выход из окружения, то есть при вызове process.exit()
.
--trace-require-module=mode
Добавлено в: v23.5.0
Печатает информацию об использовании Загрузки модулей ECMAScript с помощью require()
.
Когда mode
равно all
, печатается все использование. Когда mode
равно no-node-modules
, использование из папки node_modules
исключается.
--trace-sigint
Добавлено в: v13.9.0, v12.17.0
Печатает трассировку стека при SIGINT.
--trace-sync-io
Добавлено в: v2.1.0
Печатает трассировку стека всякий раз, когда синхронный ввод-вывод обнаруживается после первого оборота цикла событий.
--trace-tls
Добавлено в: v12.2.0
Печатает информацию о трассировке TLS-пакетов в stderr
. Это можно использовать для отладки проблем с TLS-соединением.
--trace-uncaught
Добавлено в: v13.1.0
Печатает трассировку стека для неперехваченных исключений; обычно печатается трассировка стека, связанная с созданием Error
, тогда как это заставляет Node.js также печатать трассировку стека, связанную с выбрасыванием значения (которое не обязательно должно быть экземпляром Error
).
Включение этой опции может отрицательно сказаться на поведении сборщика мусора.
--trace-warnings
Добавлено в: v6.0.0
Печатает трассировку стека для предупреждений процесса (включая устаревания).
--track-heap-objects
Добавлено в: v2.4.0
Отслеживать выделение объектов в куче для моментальных снимков кучи.
--unhandled-rejections=mode
[История]
Версия | Изменения |
---|---|
v15.0.0 | Изменен режим по умолчанию на throw . Ранее выдавалось предупреждение. |
v12.0.0, v10.17.0 | Добавлено в: v12.0.0, v10.17.0 |
Использование этого флага позволяет изменить поведение при возникновении необработанного отклонения. Можно выбрать один из следующих режимов:
throw
: ВызватьunhandledRejection
. Если этот хук не установлен, вызвать необработанное отклонение как необработанное исключение. Это значение по умолчанию.strict
: Вызвать необработанное отклонение как необработанное исключение. Если исключение обработано, будет вызваноunhandledRejection
.warn
: Всегда вызывать предупреждение, независимо от того, установлен ли хукunhandledRejection
или нет, но не печатать предупреждение об устаревании.warn-with-error-code
: ВызватьunhandledRejection
. Если этот хук не установлен, вызвать предупреждение и установить код выхода процесса равным 1.none
: Отключить все предупреждения.
Если отклонение происходит во время фазы статической загрузки ES-модуля точки входа командной строки, оно всегда будет вызывать его как необработанное исключение.
--use-bundled-ca
, --use-openssl-ca
Добавлено в: v6.11.0
Использовать встроенное хранилище CA Mozilla, поставляемое с текущей версией Node.js, или использовать хранилище CA OpenSSL по умолчанию. Хранилище по умолчанию выбирается во время сборки.
Встроенное хранилище CA, поставляемое с Node.js, является моментальным снимком хранилища Mozilla CA, который фиксируется во время выпуска. Оно идентично на всех поддерживаемых платформах.
Использование хранилища OpenSSL позволяет вносить внешние изменения в хранилище. Для большинства дистрибутивов Linux и BSD это хранилище поддерживается сопровождающими дистрибутивы и системными администраторами. Расположение хранилища CA OpenSSL зависит от конфигурации библиотеки OpenSSL, но это можно изменить во время выполнения с помощью переменных среды.
См. SSL_CERT_DIR
и SSL_CERT_FILE
.
--use-largepages=mode
Добавлено в: v13.6.0, v12.17.0
Переназначает статический код Node.js на страницы большой памяти при запуске. Если это поддерживается в целевой системе, статический код Node.js будет перемещен на страницы размером 2 МиБ вместо страниц размером 4 КиБ.
Для mode
допустимы следующие значения:
off
: Попытка отображения не будет предпринята. Это значение по умолчанию.on
: Если поддерживается операционной системой, попытка отображения будет предпринята. Сбой отображения будет проигнорирован, а сообщение будет выведено в стандартный поток ошибок.silent
: Если поддерживается операционной системой, попытка отображения будет предпринята. Сбой отображения будет проигнорирован и не будет сообщен.
--v8-options
Добавлено в: v0.1.3
Вывести параметры командной строки V8.
--v8-pool-size=num
Добавлено в: v5.10.0
Установить размер пула потоков V8, который будет использоваться для выделения фоновых заданий.
Если установлено значение 0
, то Node.js выберет подходящий размер пула потоков на основе оценки степени параллелизма.
Степень параллелизма относится к количеству вычислений, которые могут выполняться одновременно на данном компьютере. В общем случае, это то же самое, что и количество процессоров, но оно может отличаться в таких средах, как виртуальные машины или контейнеры.
-v
, --version
Добавлено в: v0.1.3
Вывести версию node.
--watch
[История]
Версия | Изменения |
---|---|
v22.0.0, v20.13.0 | Режим наблюдения теперь стабилен. |
v19.2.0, v18.13.0 | Тестовый модуль теперь поддерживает запуск в режиме наблюдения. |
v18.11.0, v16.19.0 | Добавлено в: v18.11.0, v16.19.0 |
[Стабильность: 2 - Стабильный]
Стабильность: 2 Стабильность: 2 - Стабильный
Запускает Node.js в режиме наблюдения. В режиме наблюдения изменения в отслеживаемых файлах приводят к перезапуску процесса Node.js. По умолчанию режим наблюдения будет отслеживать точку входа и любые обязательные или импортированные модули. Используйте --watch-path
, чтобы указать, какие пути отслеживать.
Этот флаг нельзя комбинировать с --check
, --eval
, --interactive
или REPL.
node --watch index.js
--watch-path
[История]
Версия | Изменения |
---|---|
v22.0.0, v20.13.0 | Режим отслеживания теперь стабилен. |
v18.11.0, v16.19.0 | Добавлено в: v18.11.0, v16.19.0 |
[Стабильно: 2 - Стабильно]
Стабильно: 2 Стабильность: 2 - Стабильно
Запускает Node.js в режиме отслеживания и указывает, за какими путями следить. В режиме отслеживания изменения в отслеживаемых путях приводят к перезапуску процесса Node.js. Это отключит отслеживание требуемых или импортированных модулей, даже при использовании в сочетании с --watch
.
Этот флаг нельзя комбинировать с --check
, --eval
, --interactive
, --test
или REPL.
node --watch-path=./src --watch-path=./tests index.js
Эта опция поддерживается только в macOS и Windows. Исключение ERR_FEATURE_UNAVAILABLE_ON_PLATFORM
будет выброшено, если опция используется на платформе, которая ее не поддерживает.
--watch-preserve-output
Добавлено в: v19.3.0, v18.13.0
Отключает очистку консоли при перезапуске процесса в режиме отслеживания.
node --watch --watch-preserve-output test.js
--zero-fill-buffers
Добавлено в: v6.0.0
Автоматически заполняет нулями все вновь выделенные экземпляры Buffer
и SlowBuffer
.
Переменные окружения
FORCE_COLOR=[1, 2, 3]
Переменная окружения FORCE_COLOR
используется для включения цветного вывода ANSI. Значение может быть:
1
,true
или пустая строка''
указывают на поддержку 16 цветов,2
для указания поддержки 256 цветов или3
для указания поддержки 16 миллионов цветов.
Когда FORCE_COLOR
используется и установлено в поддерживаемое значение, переменные окружения NO_COLOR
и NODE_DISABLE_COLORS
игнорируются.
Любое другое значение приведет к отключению цветного вывода.
NODE_COMPILE_CACHE=dir
Добавлено в: v22.1.0
[Стабильность: 1 - Экспериментально]
Стабильность: 1 Стабильность: 1.1 - Активная разработка
Включить кэш компиляции модулей для экземпляра Node.js. Подробности смотрите в документации по кэшу компиляции модулей.
NODE_DEBUG=module[,…]
Добавлено в: v0.1.32
Список основных модулей, разделенных символом ','
, для которых следует выводить отладочную информацию.
NODE_DEBUG_NATIVE=module[,…]
Список основных модулей C++, разделенных символом ','
, для которых следует выводить отладочную информацию.
NODE_DISABLE_COLORS=1
Добавлено в: v0.3.0
Если установлено, цвета не будут использоваться в REPL.
NODE_DISABLE_COMPILE_CACHE=1
Добавлено в: v22.8.0
[Стабильность: 1 - Экспериментальная]
Стабильность: 1 Стабильность: 1.1 - Активная разработка
Отключает кеш компиляции модулей для экземпляра Node.js. Подробности см. в документации по кешу компиляции модулей.
NODE_EXTRA_CA_CERTS=file
Добавлено в: v7.3.0
Если установлено, известные "корневые" CA (например, VeriSign) будут расширены дополнительными сертификатами, находящимися в file
. Файл должен содержать один или несколько доверенных сертификатов в формате PEM. Сообщение будет выведено (один раз) с помощью process.emitWarning()
, если файл отсутствует или имеет неправильный формат, но в остальном любые ошибки игнорируются.
Ни известные, ни дополнительные сертификаты не используются, если для клиента или сервера TLS или HTTPS явно указано свойство параметра ca
.
Эта переменная среды игнорируется, когда node
запускается от имени setuid root или имеет установленные файловые возможности Linux.
Переменная среды NODE_EXTRA_CA_CERTS
считывается только при первом запуске процесса Node.js. Изменение значения во время выполнения с помощью process.env.NODE_EXTRA_CA_CERTS
не влияет на текущий процесс.
NODE_ICU_DATA=file
Добавлено в: v0.11.15
Путь к данным ICU (объект Intl
). Будет расширять связанные данные, когда скомпилировано с поддержкой small-icu.
NODE_NO_WARNINGS=1
Добавлено в: v6.11.0
Если установлено значение 1
, предупреждения процесса отключаются.
NODE_OPTIONS=options...
Добавлено в: v8.0.0
Список параметров командной строки, разделенных пробелами. options...
интерпретируются до параметров командной строки, поэтому параметры командной строки будут переопределять или добавлять после всего, что находится в options...
. Node.js завершится с ошибкой, если будет использован параметр, который не разрешен в среде, например -p
или файл сценария.
Если значение параметра содержит пробел, его можно экранировать с помощью двойных кавычек:
NODE_OPTIONS='--require "./my path/file.js"'
Флаг-синглтон, переданный как параметр командной строки, переопределит тот же флаг, переданный в NODE_OPTIONS
:
# Инспектор будет доступен на порту 5555 {#node_options=options}
NODE_OPTIONS='--inspect=localhost:4444' node --inspect=localhost:5555
Флаг, который можно передавать несколько раз, будет рассматриваться так, как если бы его экземпляры NODE_OPTIONS
были переданы первыми, а затем его экземпляры командной строки:
NODE_OPTIONS='--require "./a.js"' node --require "./b.js"
# эквивалентно: {#the-inspector-will-be-available-on-port-5555}
node --require "./a.js" --require "./b.js"
Параметры Node.js, которые разрешены, находятся в следующем списке. Если параметр поддерживает варианты как --XX, так и --no-XX, они оба поддерживаются, но в список включен только один.
--allow-addons
--allow-child-process
--allow-fs-read
--allow-fs-write
--allow-wasi
--allow-worker
--conditions
,-C
--diagnostic-dir
--disable-proto
--disable-warning
--disable-wasm-trap-handler
--dns-result-order
--enable-fips
--enable-network-family-autoselection
--enable-source-maps
--entry-url
--experimental-abortcontroller
--experimental-async-context-frame
--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-strip-types
--experimental-top-level-await
--experimental-transform-types
--experimental-vm-modules
--experimental-wasi-unstable-preview1
--experimental-wasm-modules
--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-global-navigator
--no-experimental-repl-await
--no-experimental-sqlite
--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-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
--v8-pool-size
--watch-path
--watch-preserve-output
--watch
--zero-fill-buffers
Разрешенные параметры V8:
--abort-on-uncaught-exception
--disallow-code-generation-from-strings
--enable-etw-stack-walking
--expose-gc
--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=путь[:…]
Добавлено в: v0.1.32
Список каталогов, разделенных ':'
, добавленных в начало пути поиска модулей.
В Windows это список, разделенный ';'
.
NODE_PENDING_DEPRECATION=1
Добавлено в: v8.0.0
Когда установлено значение 1
, выдавать предупреждения об ожидаемом устаревании.
Ожидаемые устаревания, как правило, идентичны устареванию времени выполнения, за тем заметным исключением, что по умолчанию они выключены и не будут выдаваться, если не установлен либо флаг командной строки --pending-deprecation
, либо переменная окружения NODE_PENDING_DEPRECATION=1
. Ожидаемые устаревания используются для предоставления своего рода механизма выборочного «раннего предупреждения», который разработчики могут использовать для обнаружения устаревшего использования API.
NODE_PENDING_PIPE_INSTANCES=экземпляры
Установить количество ожидающих дескрипторов экземпляров канала, когда сервер канала ожидает соединений. Этот параметр применяется только к Windows.
NODE_PRESERVE_SYMLINKS=1
Добавлено в: v7.1.0
Когда установлено значение 1
, указывает загрузчику модулей сохранять символические ссылки при разрешении и кэшировании модулей.
NODE_REDIRECT_WARNINGS=файл
Добавлено в: v8.0.0
Когда установлено, предупреждения процесса будут выводиться в указанный файл вместо печати в stderr. Файл будет создан, если он не существует, и будет добавлен к нему, если он существует. Если при попытке записи предупреждения в файл произойдет ошибка, предупреждение будет записано в stderr. Это эквивалентно использованию флага командной строки --redirect-warnings=file
.
NODE_REPL_EXTERNAL_MODULE=файл
[История]
Версия | Изменения |
---|---|
v22.3.0, v20.16.0 | Удалена возможность использования этой переменной окружения с kDisableNodeOptionsEnv для встраиваемых систем. |
v13.0.0, v12.16.0 | Добавлено в: v13.0.0, v12.16.0 |
Путь к модулю Node.js, который будет загружен вместо встроенного REPL. Переопределение этого значения пустой строкой (''
) приведет к использованию встроенного REPL.
NODE_REPL_HISTORY=файл
Добавлено в: v3.0.0
Путь к файлу, используемому для хранения постоянной истории REPL. Путь по умолчанию — ~/.node_repl_history
, который переопределяется этой переменной. Установка значения в пустую строку (''
или ' '
) отключает постоянную историю REPL.
NODE_SKIP_PLATFORM_CHECK=значение
Добавлено в: v14.5.0
Если значение
равно '1'
, проверка на поддерживаемую платформу пропускается во время запуска Node.js. Node.js может работать неправильно. Любые проблемы, возникающие на неподдерживаемых платформах, не будут исправлены.
NODE_TEST_CONTEXT=значение
Если значение
равно 'child'
, параметры средства создания отчетов о тестах будут переопределены, а результаты тестов будут отправляться в stdout в формате TAP. Если указано любое другое значение, Node.js не дает никаких гарантий относительно формата средства создания отчетов или его стабильности.
NODE_TLS_REJECT_UNAUTHORIZED=значение
Если значение
равно '0'
, проверка сертификатов отключается для TLS-соединений. Это делает TLS, а следовательно, и HTTPS, небезопасными. Использование этой переменной среды настоятельно не рекомендуется.
NODE_V8_COVERAGE=каталог
Когда установлено, Node.js начнет выводить покрытие кода JavaScript V8 и данные исходной карты в каталог, предоставленный в качестве аргумента (информация о покрытии записывается в файлы JSON с префиксом coverage
).
NODE_V8_COVERAGE
будет автоматически распространяться на подпроцессы, что упрощает инструментирование приложений, вызывающих семейство функций child_process.spawn()
. NODE_V8_COVERAGE
можно установить в пустую строку, чтобы предотвратить распространение.
NO_COLOR=<любое>
NO_COLOR
является псевдонимом для NODE_DISABLE_COLORS
. Значение переменной среды является произвольным.
Вывод покрытия {#no_color=<any>}
Покрытие выводится в виде массива объектов ScriptCoverage по ключу верхнего уровня result
:
{
"result": [
{
"scriptId": "67",
"url": "internal/tty.js",
"functions": []
}
]
}
Кэш исходной карты
[Стабильный: 1 - Экспериментальный]
Стабильный: 1 Стабильность: 1 - Экспериментальный
Если найдено, данные исходной карты добавляются к ключу верхнего уровня source-map-cache
в объекте покрытия JSON.
source-map-cache
— это объект с ключами, представляющими файлы, из которых были извлечены исходные карты, и значениями, которые включают необработанный URL-адрес исходной карты (в ключе url
), проанализированную информацию Source Map v3 (в ключе data
) и длины строк исходного файла (в ключе lineLengths
).
{
"result": [
{
"scriptId": "68",
"url": "file:///absolute/path/to/source.js",
"functions": []
}
],
"source-map-cache": {
"file:///absolute/path/to/source.js": {
"url": "./path-to-map.json",
"data": {
"version": 3,
"sources": ["file:///absolute/path/to/original.js"],
"names": ["Foo", "console", "info"],
"mappings": "MAAMA,IACJC,YAAaC",
"sourceRoot": "./"
},
"lineLengths": [13, 62, 38, 27]
}
}
}
OPENSSL_CONF=file
Добавлено в: v6.11.0
Загружает файл конфигурации OpenSSL при запуске. Среди прочего, это можно использовать для включения криптографии, совместимой с FIPS, если Node.js собран с ./configure --openssl-fips
.
Если используется параметр командной строки --openssl-config
, то переменная среды игнорируется.
SSL_CERT_DIR=dir
Добавлено в: v7.7.0
Если --use-openssl-ca
включен, это переопределяет и устанавливает каталог OpenSSL, содержащий доверенные сертификаты.
Имейте в виду, что если дочерняя среда не установлена явно, эта переменная среды будет наследоваться любыми дочерними процессами, и если они используют OpenSSL, это может привести к тому, что они будут доверять тем же ЦС, что и node.
SSL_CERT_FILE=file
Добавлено в: v7.7.0
Если --use-openssl-ca
включен, это переопределяет и устанавливает файл OpenSSL, содержащий доверенные сертификаты.
Имейте в виду, что если дочерняя среда не установлена явно, эта переменная среды будет наследоваться любыми дочерними процессами, и если они используют OpenSSL, это может привести к тому, что они будут доверять тем же ЦС, что и node.
TZ
[История]
Версия | Изменения |
---|---|
v16.2.0 | Изменение переменной TZ с помощью process.env.TZ = изменяет часовой пояс и в Windows. |
v13.0.0 | Изменение переменной TZ с помощью process.env.TZ = изменяет часовой пояс в POSIX-системах. |
v0.0.1 | Добавлено в: v0.0.1 |
Переменная среды TZ
используется для указания конфигурации часового пояса.
Хотя Node.js не поддерживает все способы обработки TZ
в других средах, он поддерживает основные идентификаторы часовых поясов (такие как 'Etc/UTC'
, 'Europe/Paris'
или 'America/New_York'
). Он может поддерживать несколько других сокращений или псевдонимов, но они настоятельно не рекомендуются и не гарантируются.
$ TZ=Europe/Dublin node -pe "new Date().toString()"
Wed May 12 2021 20:30:48 GMT+0100 (Irish Standard Time)
UV_THREADPOOL_SIZE=size
Устанавливает количество потоков, используемых в пуле потоков libuv, равным size
потоков.
Асинхронные системные API используются Node.js, когда это возможно, но там, где их нет, пул потоков libuv используется для создания асинхронных API Node на основе синхронных системных 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
--interpreted-frames-native-stack
--jitless
--max-old-space-size=SIZE
(в МиБ)
Устанавливает максимальный размер старого раздела памяти V8. По мере приближения потребления памяти к лимиту, V8 будет тратить больше времени на сборку мусора в попытке освободить неиспользуемую память.
На машине с 2 ГиБ памяти рекомендуется установить это значение в 1536 (1,5 ГиБ), чтобы оставить немного памяти для других нужд и избежать свопинга.
node --max-old-space-size=1536 index.js
--max-semi-space-size=SIZE
(в МиБ)
Устанавливает максимальный размер полупространства для сборщика мусора scavenge V8 в МиБ (мебибайтах). Увеличение максимального размера полупространства может повысить пропускную способность Node.js ценой большего потребления памяти.
Поскольку размер молодого поколения кучи V8 в три раза больше (см. YoungGenerationSizeFromSemiSpaceSize
в V8) размера полупространства, увеличение на 1 МиБ размера полупространства применяется к каждому из трех отдельных полупространств и приводит к увеличению размера кучи на 3 МиБ. Увеличение пропускной способности зависит от вашей рабочей нагрузки (см. #42511).
Значение по умолчанию зависит от лимита памяти. Например, в 64-битных системах с лимитом памяти 512 МиБ максимальный размер полупространства по умолчанию составляет 1 МиБ. Для ограничений памяти до 2 ГиБ включительно максимальный размер полупространства по умолчанию будет менее 16 МиБ в 64-битных системах.
Чтобы получить наилучшую конфигурацию для вашего приложения, вам следует попробовать разные значения max-semi-space-size при запуске тестов для вашего приложения.
Например, бенчмаркинг в 64-битных системах:
for MiB in 16 32 64 128; do
node --max-semi-space-size=$MiB index.js
done
--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" # выводит 12