Командная строка API
Node.js поставляется с различными параметрами командной строки. Эти параметры предоставляют встроенные средства отладки, множество способов выполнения скриптов и другие полезные параметры выполнения.
Чтобы просмотреть эту документацию в виде страницы справки в терминале, выполните man node.
Резюме
node [options] [V8 options] [<program-entry-point> | -e "script" | -] [--] [arguments]
node inspect [<program-entry-point> | -e "script" | <host>:<port>] …
node --v8-options
Выполнение без аргументов запускает REPL.
Дополнительную информацию о node inspect, см. в документации по отладчику.
Точка входа программы
Точкой входа программы является строка-спецификатор. Если строка не является абсолютным путем, она разрешается как относительный путь от текущей рабочей директории. Затем этот путь разрешается загрузчиком модулей CommonJS или загрузчиком модулей ES ES модулей, если передан параметр --experimental-default-type=module. Если соответствующий файл не найден, генерируется ошибка.
Если файл найден, его путь будет передан загрузчику модулей ES модулей в следующих случаях:
- Программа была запущена с флагом командной строки, который принудительно загружает точку входа с помощью загрузчика модулей ECMAScript, например,
--importили--experimental-default-type=module. - Файл имеет расширение
.mjs. - Файл не имеет расширения
.cjs, и ближайший родительский файлpackage.jsonсодержит поле верхнего уровня"type"со значением"module".
В противном случае файл загружается с помощью загрузчика модулей CommonJS. Дополнительные сведения см. в разделе Загрузчики модулей.
Примечание к точке входа загрузчика модулей ECMAScript
При загрузке загрузчик модулей ES загружает точку входа программы. Команда node будет принимать в качестве входных данных только файлы с расширениями .js, .mjs, или .cjs; с расширениями .wasm при включённом --experimental-wasm-modules; и без расширения при передаче --experimental-default-type=module.
Параметры
Все параметры, включая параметры V8, допускают разделение слов как дефисами (-), так и нижними подчёркиваниями (_). Например, --pending-deprecation эквивалентно --pending_deprecation.
Если параметр, принимающий единственное значение (например, --max-http-header-size), передаётся более одного раза, то используется последнее переданное значение. Параметры из командной строки имеют приоритет над параметрами, переданными через переменную среды NODE_OPTIONS.
-
Псевдоним для stdin. Аналогично использованию - в других утилитах командной строки, что означает, что скрипт читается из stdin, а остальные параметры передаются этому скрипту.
--
Указывает конец параметров Node.js. Остальные аргументы передаются скрипту. Если до этого не был указан имя файла скрипта или скрипт eval/print, то следующий аргумент используется как имя файла скрипта.
--abort-on-uncaught-exception
Прерывание вместо завершения приводит к генерации файла core для анализа после аварии с помощью отладчика (например, 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 --experimental-permission --allow-fs-read=* index.js
node:internal/modules/cjs/loader:1319
return process.dlopen(module, path.toNamespacedPath(filename));
^
Error: Cannot load native addon because loading addons is disabled.
at Module._extensions..node (node:internal/modules/cjs/loader:1319:18)
at Module.load (node:internal/modules/cjs/loader:1091:32)
at Module._load (node:internal/modules/cjs/loader:938:12)
at Module.require (node:internal/modules/cjs/loader:1115:19)
at require (node:internal/modules/helpers:130:18)
at Object.<anonymous> (/home/index.js:1:15)
at Module._compile (node:internal/modules/cjs/loader:1233:14)
at Module._extensions..js (node:internal/modules/cjs/loader:1287:10)
at Module.load (node:internal/modules/cjs/loader:1091:32)
at Module._load (node:internal/modules/cjs/loader:938:12) {
code: 'ERR_DLOPEN_DISABLED'
} copy
--allow-child-process
При использовании Модели разрешений, процесс по умолчанию не сможет запускать дочерние процессы. Попытки сделать это приведут к ошибке ERR_ACCESS_DENIED, если пользователь явно не передаст флаг --allow-child-process при запуске Node.js.
Пример:
const childProcess = require('node:child_process');
// Attempt to bypass the permission
childProcess.spawn('node', ['-e', 'require("fs").writeFileSync("/new-file", "example")']); copy $ node --experimental-permission --allow-fs-read=* index.js
node:internal/child_process:388
const err = this._handle.spawn(options);
^
Error: Access to this API has been restricted
at ChildProcess.spawn (node:internal/child_process:388:28)
at Object.spawn (node:child_process:723:9)
at Object.<anonymous> (/home/index.js:3:14)
at Module._compile (node:internal/modules/cjs/loader:1120:14)
at Module._extensions..js (node:internal/modules/cjs/loader:1174:10)
at Module.load (node:internal/modules/cjs/loader:998:32)
at Module._load (node:internal/modules/cjs/loader:839:12)
at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:81:12)
at node:internal/main/run_main_module:17:47 {
code: 'ERR_ACCESS_DENIED',
permission: 'ChildProcess'
} copy
--allow-fs-read
Этот флаг настраивает разрешения на чтение файловой системы с использованием Модели разрешений.
Допустимые аргументы для флага --allow-fs-read:
-
*- Для разрешения всехFileSystemReadопераций. - Несколько путей можно разрешить, используя несколько флагов
--allow-fs-read. Пример--allow-fs-read=/folder1/ --allow-fs-read=/folder1/
Пути, разделенные запятыми (,), больше не поддерживаются. При передаче флага с запятой будет выведено предупреждение.
Примеры можно найти в документации по Разрешениям файловой системы.
Относительные пути пока НЕ поддерживаются через флаг командной строки.
Модуль инициализации также должен быть разрешен. Рассмотрим пример:
$ node --experimental-permission t.js
node:internal/modules/cjs/loader:162
const result = internalModuleStat(filename);
^
Error: Access to this API has been restricted
at stat (node:internal/modules/cjs/loader:162:18)
at Module._findPath (node:internal/modules/cjs/loader:640:16)
at resolveMainPath (node:internal/modules/run_main:15:25)
at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:53:24)
at node:internal/main/run_main_module:23:47 {
code: 'ERR_ACCESS_DENIED',
permission: 'FileSystemRead',
resource: '/Users/rafaelgss/repos/os/node/t.js'
} copy Процесс должен иметь доступ к модулю index.js:
node --experimental-permission --allow-fs-read=/path/to/index.js index.js copy
--allow-fs-write
Этот флаг настраивает разрешения на запись в файловой системе с использованием Модели разрешений.
Допустимые аргументы для флага --allow-fs-write:
-
*- Для разрешения всехFileSystemWriteопераций. - Несколько путей можно разрешить, используя несколько флагов
--allow-fs-read. Пример--allow-fs-read=/folder1/ --allow-fs-read=/folder1/
Пути, разделенные запятыми (,), больше не поддерживаются. При передаче флага с запятой будет выведено предупреждение.
Примеры можно найти в документации по Разрешениям файловой системы.
Относительные пути НЕ поддерживаются через флаг командной строки.
--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 --experimental-permission --allow-fs-read=* index.js
node:internal/worker:188
this[kHandle] = new WorkerImpl(url,
^
Error: Access to this API has been restricted
at new Worker (node:internal/worker:188:21)
at Object.<anonymous> (/home/index.js.js:3:1)
at Module._compile (node:internal/modules/cjs/loader:1120:14)
at Module._extensions..js (node:internal/modules/cjs/loader:1174:10)
at Module.load (node:internal/modules/cjs/loader:998:32)
at Module._load (node:internal/modules/cjs/loader:839:12)
at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:81:12)
at node:internal/main/run_main_module:17:47 {
code: 'ERR_ACCESS_DENIED',
permission: 'WorkerThreads'
} copy
--build-snapshot
Генерирует снимок 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 Для получения дополнительной информации, ознакомьтесь с документацией v8.startupSnapshot API.
В настоящее время поддержка снимков во время выполнения экспериментальна, так как:
- Модули пользовательского уровня пока не поддерживаются в снимке, поэтому может быть заснят только один единственный файл. Однако пользователи могут объединить свои приложения в один скрипт с помощью своего любимого средства сборки перед созданием снимка.
- Только подмножество встроенных модулей работает в снимке, хотя набор тестов ядра Node.js проверяет, что несколько достаточно сложных приложений могут быть засняты. Поддержка дополнительных модулей добавляется. Если при создании снимка возникнут какие-либо сбои или ошибки, отправьте отчет в трекер проблем Node.js и укажите ссылку на него в трекинговой проблеме пользовательских снимков.
--build-snapshot-config
Указывает путь к файлу конфигурации JSON, который настраивает поведение создания снимков.
В настоящее время поддерживаются следующие параметры:
-
builder<строка> Обязательный. Указывает имя скрипта, который выполняется перед созданием снимка, как если бы--build-snapshotбыл передан со скриптомbuilderв качестве основного. -
withoutCodeCache<булево> Необязательный. Включение кэша кода сокращает время, затраченное на компиляцию функций, включённых в снимок, за счёт большего размера снимка и потенциальной потери портативности снимка.
При использовании этого флага дополнительные файлы скриптов, переданные в командной строке, не будут выполняться, а вместо этого будут интерпретироваться как обычные аргументы командной строки.
-c, --check
Синтаксическая проверка скрипта без выполнения.
--completion-bash
Выводит скрипт bash completion для 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 при запуске и записывает профиль CPU в диск перед выходом.
Если --cpu-prof-dir не указано, сгенерированный профиль размещается в текущем рабочем каталоге.
Если --cpu-prof-name не указано, сгенерированный профиль называется CPU.${yyyymmdd}.${hhmmss}.${pid}.${tid}.${seq}.cpuprofile.
$ node --cpu-prof index.js $ ls *.cpuprofile CPU.20190409.202950.15293.0.0.cpuprofile copy
--cpu-prof-dir
Указывает каталог, в котором будут размещены профили CPU, сгенерированные командой --cpu-prof.
Значение по умолчанию контролируется командной строкой --diagnostic-dir.
--cpu-prof-interval
Указывает интервал выборки в микросекундах для профилей CPU, сгенерированных командой --cpu-prof. Значение по умолчанию — 1000 микросекунд.
--cpu-prof-name
Указывает имя файла профиля CPU, сгенерированного командой --cpu-prof.
--diagnostic-dir=directory
Устанавливает каталог, в который записываются все файлы диагностической информации. По умолчанию — текущий рабочий каталог.
Влияет на каталог вывода по умолчанию для:
--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:
Модули MJS
import sys from 'node:sys';
Модули CJS
const sys = require('node:sys'); Например, следующий скрипт будет выводить DEP0025 require('node:sys'), но не любые экспериментальные предупреждения (например, ExperimentalWarning: vm.measureMemory это экспериментальная функция в <=v21), при выполнении с node --disable-warning=ExperimentalWarning:
Модули MJS
import sys from 'node:sys'; import vm from 'node:vm'; vm.measureMemory();
Модули CJS
const sys = require('node:sys');
const vm = require('node:vm');
vm.measureMemory();
--disable-wasm-trap-handler
По умолчанию Node.js включает проверки WebAssembly, основанные на обработчиках ловушек. В результате V8 не нужно вставлять встроенные проверки границ в код, скомпилированный из WebAssembly, что может значительно ускорить выполнение WebAssembly, но эта оптимизация требует выделения большой виртуальной области памяти (в настоящее время 10 ГБ). Если процесс Node.js не имеет доступа к достаточно большой виртуальной адресной области из-за системных настроек или ограничений оборудования, пользователи не смогут запустить ни один WebAssembly, который подразумевает выделение в этой виртуальной области памяти, и увидят ошибку недостатка памяти.
$ ulimit -v 5000000
$ node -p "new WebAssembly.Memory({ initial: 10, maximum: 100 });"
[eval]:1
new WebAssembly.Memory({ initial: 10, maximum: 100 });
^
RangeError: WebAssembly.Memory(): could not allocate memory
at [eval]:1:1
at runScriptInThisContext (node:internal/vm:209:10)
at node:internal/process/execution:118:14
at [eval]-wrapper:6:24
at runScript (node:internal/process/execution:101:62)
at evalScript (node:internal/process/execution:136:3)
at node:internal/main/eval_string:49:3
copy --disable-wasm-trap-handler отключает эту оптимизацию, чтобы пользователи могли хотя бы запустить WebAssembly (с менее оптимальной производительностью), когда виртуальная адресная область памяти, доступная для их процесса Node.js, меньше, чем требуется виртуальной областью памяти V8 WebAssembly.
--disable-proto=mode
Отключить свойство Object.prototype.__proto__. Если mode является delete, свойство удаляется полностью. Если mode является throw, доступ к свойству приводит к исключению с кодом ERR_PROTO_ACCESS.
--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 был скомпилирован с поддержкой совместимого с FIPS OpenSSL.)
--enable-source-maps
Включить поддержку Source Map v3 для трассировок стека.
При использовании транспилятора, такого как TypeScript, трассировки стека, выброшенные приложением, ссылаются на транспилированный код, а не на исходные позиции. --enable-source-maps позволяет кешировать Source Map и делает все возможное, чтобы отображать трассировки стека относительно исходного файла.
Переопределение Error.prepareStackTrace может помешать --enable-source-maps изменять трассировку стека. Вызов и возврат результатов исходной функции Error.prepareStackTrace в переопределяющей функции позволяет модифицировать трассировку стека с помощью source map.
const originalPrepareStackTrace = Error.prepareStackTrace;
Error.prepareStackTrace = (error, trace) => {
// Modify error and trace and format stack trace with
// original Error.prepareStackTrace.
return originalPrepareStackTrace(error, trace);
}; copy Обратите внимание, что включение source map может добавить задержку в ваше приложение при доступе к Error.stack. Если вы часто обращаетесь к Error.stack в своем приложении, учтите последствия производительности --enable-source-maps.
--env-file=config
Загружает переменные среды из файла, относящегося к текущему каталогу, делая их доступными для приложений при process.env. Парсятся и применяются переменные среды, настраивающие Node.js, такие как NODE_OPTIONS. Если та же переменная определена в среде и в файле, приоритет имеет значение из среды.
Вы можете передать несколько аргументов --env-file. Последующие файлы переопределяют существующие переменные, определенные в предыдущих файлах.
node --env-file=.env --env-file=.development.env index.js copy
Формат файла должен содержать по одной строке для каждой пары ключ-значение имени переменной среды и значения, разделенные =:
PORT=3000 copy
Любой текст после # обрабатывается как комментарий:
# This is a comment PORT=3000 # This is also a comment copy
Значения могут начинаться и заканчиваться следующими кавычками: `, " или '. Они опускаются из значений.
USERNAME="nodejs" # will result in `nodejs` as the value. copy
Поддерживаются многострочные значения:
MULTI_LINE="THIS IS A MULTILINE" # will result in `THIS IS\nA MULTILINE` as the value. copy
Ключевое слово export перед ключом игнорируется:
export USERNAME="nodejs" # will result in `nodejs` as the value. copy
-e, --eval "script"
Вычислить следующий аргумент как JavaScript. Модули, которые предопределены в REPL, также могут использоваться в script.
В Windows, используя cmd.exe одиночная кавычка не будет работать правильно, так как она распознает только двойные " для кавычек. В Powershell или Git bash можно использовать как ', так и ".
--experimental-default-type=type
Определите, какую систему модулей, module или commonjs, использовать для следующего:
-
Входные данные в виде строки, предоставленные через
--evalили STDIN, если--input-typeне указано. -
Файлы, заканчивающиеся на
.jsили без расширения, если файл с расширениемpackage.jsonотсутствует в той же папке или любой родительской папке. -
Файлы, заканчивающиеся на
.jsили без расширения, если ближайшее родительское полеpackage.jsonне содержит поле"type"; за исключением случаев, когда папкаpackage.jsonили любая родительская папка находится внутри папкиnode_modules.
Другими словами, --experimental-default-type=module переключает все места, где Node.js по умолчанию использует CommonJS, на использование модулей ECMAScript, за исключением папок и подпапок ниже node_modules, для обеспечения обратной совместимости.
В папках --experimental-default-type=module и --experimental-wasm-modules файлы без расширения будут обрабатываться как WebAssembly, если они начинаются с магического числа WebAssembly (\0asm); в противном случае они будут обрабатываться как ES-модули JavaScript.
--experimental-detect-module
Node.js проверит исходный код неоднозначного ввода, чтобы определить, содержит ли он синтаксис ES-модулей; если такой синтаксис будет обнаружен, ввод будет обработан как ES-модуль.
Неоднозначный ввод определяется как:
- Файлы с расширением
.jsили без расширения; и либо отсутствует файл управленияpackage.json, либо он не содержит поляtype; и--experimental-default-typeне указано. - Входные данные в виде строки (
--evalили STDIN), когда ни--input-type, ни--experimental-default-typeне указаны.
Синтаксис ES-модулей определяется как синтаксис, который вызовет ошибку при оценке как CommonJS. Это включает в себя следующее:
-
importинструкции (но неimport()выражения, которые допустимы в CommonJS). -
exportинструкции. -
import.metaссылки. -
awaitв верхней части модуля. - Лексические повторные объявления переменных оболочки CommonJS (
require,module,exports,__dirname,__filename).
--experimental-import-meta-resolve
Включить экспериментальную поддержку родительского URL import.meta.resolve(), которая позволяет передавать второй аргумент parentURL для контекстного разрешения.
Ранее функция import.meta.resolve была ограничена.
--experimental-loader=module
Использование этого флага не рекомендуется, и он может быть удалён в будущих версиях Node.js. Пожалуйста, используйте
--importсregister()вместо него.
Укажите module, содержащий экспортированные настраиваемые крючки модуля. module может быть любой строкой, принимаемой в качестве import спецификатора.
--experimental-network-imports
Включить экспериментальную поддержку протокола https: в спецификаторах import.
--experimental-permission
Включить модель разрешений для текущего процесса. При включении следующие разрешения ограничены:
- Файловая система - управляемая через
--allow-fs-read,--allow-fs-writeфлаги - Процесс-потомок - управляемый через
--allow-child-processфлаг - Потоки-рабочие - управляемые через
--allow-workerфлаг
--experimental-policy
Использовать указанный файл в качестве политики безопасности.
--experimental-sea-config
Использовать этот флаг для генерации блоба, который можно вставить в двоичный файл Node.js для создания единого исполняемого файла. Подробнее см. документацию о этой конфигурации.
--experimental-shadow-realm
Использовать этот флаг для включения поддержки ShadowRealm.
--experimental-test-coverage
При совместном использовании с модулем node:test отчёт о покрытии кода генерируется в выводе тестового исполнителя. Если тесты не выполняются, отчёт о покрытии кода не генерируется. Дополнительные сведения см. в документации по сбору отчёта о покрытии кода из тестов.
--experimental-vm-modules
Включить экспериментальную поддержку ES-модулей в модуле node:vm.
--experimental-wasi-unstable-preview1
Включить экспериментальную поддержку WebAssembly System Interface (WASI).
--experimental-wasm-modules
Включить экспериментальную поддержку модулей WebAssembly.
--experimental-websocket
Включить экспериментальную поддержку WebSocket.
--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, чтобы вместить дополнительные накладные расходы на память кучи V8, и постарается избежать исчерпания всей памяти, доступной процессу. Если процесс использует больше памяти, чем система считает целесообразным, процесс может быть неожиданно завершен системой, в зависимости от конфигурации системы.
$ node --max-old-space-size=100 --heapsnapshot-near-heap-limit=3 index.js Wrote snapshot to Heap.20200430.100036.49580.0.001.heapsnapshot Wrote snapshot to Heap.20200430.100037.49580.0.002.heapsnapshot Wrote snapshot to Heap.20200430.100038.49580.0.003.heapsnapshot <--- Last few GCs ---> [49580:0x110000000] 4826 ms: Mark-sweep 130.6 (147.8) -> 130.5 (147.8) MB, 27.4 / 0.0 ms (average mu = 0.126, current mu = 0.034) allocation failure scavenge might not succeed [49580:0x110000000] 4845 ms: Mark-sweep 130.6 (147.8) -> 130.6 (147.8) MB, 18.8 / 0.0 ms (average mu = 0.088, current mu = 0.031) allocation failure scavenge might not succeed <--- JS stacktrace ---> FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory .... copy
--heapsnapshot-signal=signal
Включает обработчик сигнала, который заставляет процесс Node.js записать дамп кучи при получении указанного сигнала. signal должен быть допустимым именем сигнала. По умолчанию отключено.
$ node --heapsnapshot-signal=SIGUSR2 index.js & $ ps aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND node 1 5.5 6.1 787252 247004 ? Ssl 16:43 0:02 node --heapsnapshot-signal=SIGUSR2 index.js $ kill -USR2 1 $ ls Heap.20190718.133405.15554.0.001.heapsnapshot copy
-h, --help
Выводит параметры командной строки node. Вывод этого параметра менее подробный, чем в этом документе.
--icu-data-dir=file
Указывает путь загрузки данных ICU. (Переопределяет NODE_ICU_DATA.)
--import=module
Предварительно загружает указанный модуль при запуске. Если флаг указан несколько раз, каждый модуль будет выполняться последовательно в порядке их появления, начиная с модулей, указанных в NODE_OPTIONS.
Следует правилам разрешения модулей ECMAScript. Используйте --require для загрузки модуля CommonJS. Модули, предварительно загруженные с --require будут выполняться перед модулями, предварительно загруженными с --import.
--input-type=type
Это настраивает Node.js для интерпретации входных данных --eval или STDIN как модулей CommonJS или ES-модулей. Допустимые значения — "commonjs" или "module" По умолчанию используется "commonjs", если не используется --experimental-default-type=module.
REPL не поддерживает этот параметр. Использование --input-type=module с --print вызовет ошибку, так как --print не поддерживает синтаксис ES-модулей.
--insecure-http-parser
Используйте небезопасный парсер HTTP, который принимает недопустимые HTTP-заголовки. Это может обеспечить межпрограммную совместимость с несоответствующими реализациями HTTP. Также это может позволить подмену запросов и другие атаки HTTP, которые основаны на принятии недопустимых заголовков. Избегайте использования этого параметра.
--inspect[=[host:]port]
Активирует инспектор на host:port. Значение по умолчанию — 127.0.0.1:9229.
Интеграция V8 инспектора позволяет инструментам, таким как Chrome DevTools и IDE, отлаживать и профилировать экземпляры Node.js. Инструменты подключаются к экземплярам Node.js через TCP-порт и общаются, используя протокол Chrome DevTools. См. интеграцию V8 инспектора для Node.js для получения дополнительной информации об отладчике Node.js.
Предупреждение: привязка инспектора к общедоступной комбинации IP-адрес:порт небезопасна
Привязка инспектора к общедоступному IP-адресу (включая 0.0.0.0) с открытым портом небезопасна, так как это позволяет внешним хостам подключаться к инспектору и выполнять атаку удаленного выполнения кода.
Если вы указываете хост, убедитесь, что:
- К хосту нет доступа из общедоступных сетей.
- Брандмауэр не допускает нежелательных подключений к порту.
Более конкретно, --inspect=0.0.0.0 небезопасен, если порт (9229 по умолчанию) не защищен брандмауэром.
См. раздел последствия использования отладки с точки зрения безопасности для получения дополнительной информации.
--inspect-brk[=[host:]port]
Активирует инспектор на host:port и останавливается в начале пользовательского скрипта. Значение по умолчанию host:port — 127.0.0.1:9229.
См. интеграцию V8 инспектора для Node.js для получения дополнительной информации об отладчике Node.js.
--inspect-port=[host:]port
Устанавливает host:port для использования при активации инспектора. Полезно при активации инспектора путём отправки сигнала SIGUSR1.
Хост по умолчанию — 127.0.0.1.
См. предупреждение о безопасности ниже относительно использования параметра host.
--inspect-publish-uid=stderr,http
Указывает способы экспонирования URL веб-соккета инспектора.
По умолчанию URL веб-соккета инспектора доступен в stderr и по адресу /json/list на http://host:port/json/list.
--inspect-wait[=[host:]port]
Активирует инспектор на host:port и ожидает подключения отладчика. Значение по умолчанию host:port — 127.0.0.1:9229.
См. интеграцию V8 инспектора для Node.js для получения дополнительной информации об отладчике Node.js.
-i, --interactive
Открывает REPL даже если stdin не является терминалом.
--jitless
Отключает динамическое выделение исполняемой памяти. Это может потребоваться на некоторых платформах по соображениям безопасности. Также это может уменьшить поверхность атак на других платформах, но может привести к серьёзному снижению производительности.
--max-http-header-size=size
Укажите максимальный размер HTTP-заголовков в байтах. По умолчанию 16 КБ.
--napi-modules
Этот параметр не имеет эффекта. Он поддерживается для совместимости.
--network-family-autoselection-attempt-timeout
Устанавливает значение по умолчанию для таймаута попытки автоматического выбора семейства сетей. Дополнительную информацию можно найти в net.getDefaultAutoSelectFamilyAttemptTimeout().
--no-addons
Отключает условие экспорта node-addons и отключает загрузку нативных плагинов. При указании --no-addons вызов process.dlopen или загрузка нативного C++ плагина приведут к ошибке и сгенерируют исключение.
--no-deprecation
Отключает предупреждения о устаревших функциях.
--no-experimental-fetch
Отключает экспериментальную поддержку API Fetch.
--no-experimental-global-customevent
Отключает экспонирование CustomEvent Web API в глобальном контексте.
--no-experimental-global-webcrypto
Отключить экспозицию API Веб-криптографии в глобальном пространстве имен.
--no-experimental-repl-await
Используйте этот флаг для отключения оператора `await` на верхнем уровне в REPL.
--no-extra-info-on-fatal-exception
Скрыть дополнительную информацию о фатальной ошибке, вызвавшей завершение.
--no-force-async-hooks-checks
Отключает проверки async_hooks во время выполнения. Они всё ещё будут включены динамически, когда включён async_hooks.
--no-global-search-paths
Не искать модули из глобальных путей, таких как $HOME/.node_modules и $NODE_PATH.
--no-network-family-autoselection
Отключает алгоритм автоматического выбора семейства, если опции подключения не включают его явно.
--no-warnings
Заглушить все предупреждения процесса (включая устаревшие API).
--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.
--policy-integrity=sri
Инструктирует Node.js вывести ошибку перед выполнением любого кода, если у политики нет указанной целостности. Ожидает строку Subresource Integrity в качестве параметра.
--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-filename=filename
Имя файла, в который будет записан отчёт.
Если имя файла установлено в 'stdout' или 'stderr', отчёт будет записан в стандартный вывод или стандартный поток ошибок процесса соответственно.
--report-on-fatalerror
Включает генерацию отчёта при фатальных ошибках (внутренних ошибках в среде выполнения Node.js, таких как недостаток памяти), которые приводят к завершению приложения. Полезно для проверки различных диагностических данных, таких как куча, стек, состояние цикла событий, использование ресурсов и т.д., чтобы разобраться с причиной фатальной ошибки.
--report-on-signal
Включает генерацию отчёта при получении указанного (или предопределённого) сигнала в работающем процессе Node.js. Сигнал для запуска отчёта задаётся через --report-signal.
--report-signal=signal
Устанавливает или сбрасывает сигнал для генерации отчёта (не поддерживается в Windows). Значение по умолчанию — SIGUSR2.
--report-uncaught-exception
Включает генерацию отчёта, когда процесс завершается из-за необработанного исключения. Полезно при инспектировании JavaScript стека в сочетании с нативным стеком и другими данными среды выполнения.
--report-exclude-network
Исключить header.networkInterfaces из диагностического отчёта. По умолчанию не установлено, сетевые интерфейсы включены.
-r, --require module
Предварительная загрузка указанного модуля при запуске.
Следует правилам разрешения модулей require(). module может быть либо путём к файлу, либо именем модуля Node.
Поддерживаются только модули CommonJS. Для предварительной загрузки модуля ECMAScript используйте --import. Модули, предварительно загруженные с помощью --require, будут выполняться перед модулями, предварительно загруженными с помощью --import.
--secure-heap=n
Инициализирует защищённую кучу OpenSSL размером в n байтов. При инициализации, защищённая куча используется для выбранных типов выделения памяти в OpenSSL во время генерации ключей и других операций. Это полезно, например, для предотвращения утечки конфиденциальной информации из-за переполнения или недополнения указателей.
Размер защищённой кучи фиксирован и не может быть изменён во время выполнения, поэтому, если используется, важно выбрать достаточно большую кучу, чтобы она покрывала все потребности приложения.
Размер кучи должен быть степенью двойки. Любое значение меньше 2 отключит защищённую кучу.
Защищённая куча отключена по умолчанию.
Защищённая куча недоступна в Windows.
См. CRYPTO_secure_malloc_init для получения дополнительной информации.
--secure-heap-min=n
При использовании --secure-heap, флаг --secure-heap-min задаёт минимальный объём выделения из защищённой кучи. Минимальное значение — 2. Максимальное значение — меньшее из --secure-heap или 2147483647. Значение должно быть степенью двойки.
--snapshot-blob=path
При использовании с --build-snapshot, --snapshot-blob указывает путь, куда сохраняется сгенерированный blob снимка. Если не указано, сгенерированный blob сохраняется в snapshot.blob в текущей рабочей директории.
При использовании без --build-snapshot, --snapshot-blob указывает путь к blob, используемому для восстановления состояния приложения.
При загрузке снимка Node.js проверяет:
- Версия, архитектура и платформа запущенного бинарника Node.js точно такие же, как у бинарника, который создаёт снимок.
- Флаги V8 и особенности процессора совместимы с флагами и особенностями процессора бинарника, создающего снимок.
Если они не совпадают, Node.js откажется от загрузки снимка и завершит работу со статусом 1.
--test
Запускает командную строку Node.js для запуска тестов. Этот флаг нельзя использовать совместно с --watch-path, --check, --eval, --interactive, или инспектором. См. документацию по запуску тестов из командной строки для получения дополнительной информации.
--test-concurrency
Максимальное количество файлов тестов, которые тестовый запуск CLI будет выполнять одновременно. Значение по умолчанию — os.availableParallelism() - 1.
--test-force-exit
Настраивает тестовый запуск на завершение процесса после выполнения всех известных тестов, даже если цикл событий в противном случае останется активным.
--test-name-pattern
Регулярное выражение, которое настраивает тестовый запуск на выполнение только тех тестов, имя которых соответствует заданному шаблону. См. документацию по фильтрации тестов по имени для получения дополнительной информации.
--test-only
Настраивает тестовый запуск на выполнение только тестов верхнего уровня, у которых установлен параметр only.
--test-reporter
Используемый отчётчик тестов при запуске тестов. Смотрите документацию по отчётчикам тестов для получения дополнительной информации.
--test-reporter-destination
Место назначения соответствующего отчётчика тестов. См. документацию по отчётчикам тестов для получения дополнительной информации.
--test-shard
Фрагмент набора тестов для выполнения в формате <index>/<total>, где
index — целое положительное число, индекс разделённых частей; total — целое положительное число, общее количество разделённых частей. Эта команда разделит все файлы тестов на total равных частей и выполнит только те, которые окажутся в index части.
Например, чтобы разделить ваш набор тестов на три части, используйте:
node --test --test-shard=1/3 node --test --test-shard=2/3 node --test --test-shard=3/3 copy
--test-timeout
Количество миллисекунд, по истечении которых выполнение теста завершится с ошибкой. Если не указано, подтесты унаследуют это значение от родительского теста. Значение по умолчанию — Infinity.
--title=title
Выбрасывать ошибки при устаревших методах.
--throw-deprecation
Установить process.title при запуске.
--tls-cipher-list=list
Указать альтернативный список шифров TLS по умолчанию. Требуется, чтобы Node.js был скомпилирован с поддержкой криптографии (по умолчанию).
--tls-keylog=file
Записать данные ключей TLS в файл. Данные ключей в формате NSS SSLKEYLOGFILE и могут быть использованы программным обеспечением (например, Wireshark) для расшифровки TLS трафика.
--tls-max-v1.2
Установить значение tls.DEFAULT_MAX_VERSION на 'TLSv1.2'. Используется для отключения поддержки TLSv1.3.
--tls-max-v1.3
Установить значение по умолчанию для tls.DEFAULT_MAX_VERSION на 'TLSv1.3'. Используется для включения поддержки TLSv1.3.
--tls-min-v1.0
Установить значение по умолчанию для tls.DEFAULT_MIN_VERSION на 'TLSv1'. Используется для совместимости со старыми клиентами или серверами TLS.
--tls-min-v1.1
Установить значение по умолчанию для tls.DEFAULT_MIN_VERSION на 'TLSv1.1'. Используется для совместимости со старыми клиентами или серверами TLS.
--tls-min-v1.2
Установить значение по умолчанию для tls.DEFAULT_MIN_VERSION в 'TLSv1.2'. Это значение по умолчанию для версий 12.x и выше, но опция поддерживается для совместимости со старыми версиями Node.js.
--tls-min-v1.3
Установить значение по умолчанию для tls.DEFAULT_MIN_VERSION в 'TLSv1.3'. Используется для отключения поддержки TLSv1.2, которая не так безопасна, как TLSv1.3.
--trace-atomics-wait
Выводить краткие сводки вызовов Atomics.wait() в stderr. Вывод может выглядеть так:
(node:15701) [Thread 0] Atomics.wait(<address> + 0, 1, inf) started (node:15701) [Thread 0] Atomics.wait(<address> + 0, 1, inf) did not wait because the values mismatched (node:15701) [Thread 0] Atomics.wait(<address> + 0, 0, 10) started (node:15701) [Thread 0] Atomics.wait(<address> + 0, 0, 10) timed out (node:15701) [Thread 0] Atomics.wait(<address> + 4, 0, inf) started (node:15701) [Thread 1] Atomics.wait(<address> + 4, -1, inf) started (node:15701) [Thread 0] Atomics.wait(<address> + 4, 0, inf) was woken up by another thread (node:15701) [Thread 1] Atomics.wait(<address> + 4, -1, inf) was woken up by another thread copy
Поля здесь соответствуют:
- Идентификатору потока, как указано в
worker_threads.threadId - Основному адресу
SharedArrayBufferв вопросе, а также смещению байтов, соответствующему индексу, переданному вAtomics.wait() - Ожидаемому значению, переданному в
Atomics.wait() - Таймауту, переданному в
Atomics.wait
--trace-deprecation
Выводить стеки вызовов для устаревших функций.
--trace-event-categories
Запятой-разделенный список категорий, которые должны отслеживаться при включении отслеживания событий отслеживания с помощью --trace-events-enabled.
--trace-event-file-pattern
Шаблонная строка, определяющая путь к файлу для данных отслеживания событий, поддерживает ${rotation} и ${pid}.
--trace-events-enabled
Включает сбор информации о трассировке событий.
--trace-exit
Выводит стек вызовов всякий раз, когда среда завершается преднамеренно, т. е. вызывая process.exit().
--trace-sigint
Выводит стек вызовов при SIGINT.
--trace-sync-io
Выводит стек вызовов всякий раз, когда обнаруживается синхронное ввод-вывод после первого оборота цикла событий.
--trace-tls
Выводит информацию о трассировке пакетов TLS в stderr. Это можно использовать для отладки проблем с подключением TLS.
--trace-uncaught
Выводить стеки вызовов для неперехваченных исключений; обычно печатается стек вызовов, связанный с созданием Error, в то время как это заставляет Node.js также выводить стек вызовов, связанный с выбрасыванием значения (которое не обязательно должно быть экземпляром Error).
Включение этой опции может отрицательно повлиять на поведение сборки мусора.
--trace-warnings
Выводить стеки вызовов для предупреждений процесса (включая устаревшие функции).
--track-heap-objects
Отслеживать выделения объектов кучи для снимков кучи.
--unhandled-rejections=mode
Использование этого флага позволяет изменить поведение при возникновении необработанного отклонения. Можно выбрать один из следующих режимов:
-
throw: ВыдатьunhandledRejection. Если этот обработчик не задан, поднять необработанное отклонение как неперехваченное исключение. Это значение по умолчанию. -
strict: Поднять необработанное отклонение как неперехваченное исключение. Если исключение обработано,unhandledRejectionиздаётся. -
warn: Всегда вызывать предупреждение, независимо от того, задан ли обработчикunhandledRejectionили нет, но не выводить предупреждение об устаревании. -
warn-with-error-code: ИздатьunhandledRejection. Если этот обработчик не задан, выдать предупреждение и установить код выхода процесса в 1. -
none: Заглушить все предупреждения.
Если отклонение происходит во время фазы статической загрузки модуля ES в точке входа командной строки, оно всегда будет поднято как неперехваченное исключение.
--use-bundled-ca, --use-openssl-ca
Использовать собственное хранилище сертификатов Mozilla, предоставленное текущей версией Node.js, или использовать хранилище сертификатов по умолчанию OpenSSL. Хранилище по умолчанию выбирается на этапе сборки.
Собственное хранилище сертификатов, предоставленное Node.js, представляет собой моментальный снимок хранилища сертификатов Mozilla, зафиксированный на момент выпуска. Оно идентично на всех поддерживаемых платформах.
Использование хранилища OpenSSL позволяет производить внешние изменения в хранилище. Для большинства дистрибутивов Linux и BSD это хранилище поддерживается разработчиками дистрибутива и системными администраторами. Расположение хранилища сертификатов OpenSSL зависит от конфигурации библиотеки OpenSSL, но это может быть изменено во время выполнения с помощью переменных окружения.
См. SSL_CERT_DIR и SSL_CERT_FILE.
--use-largepages=mode
Перемапить статический код Node.js на страницы с большим объёмом памяти при запуске. Если это поддерживается целевой системой, это приведет к перемещению статического кода Node.js на страницы размером 2 МБ вместо 4 КБ.
Для mode следующие значения допустимы:
-
off: Попытка перемапирования не будет предпринята. Это значение по умолчанию. -
on: Если это поддерживается ОС, попытка перемапирования будет предпринята. Неудача перемапирования будет проигнорирована и будет выведено сообщение в стандартный поток ошибок. -
silent: Если это поддерживается ОС, попытка перемапирования будет предпринята. Неудача перемапирования будет проигнорирована и не будет сообщаться.
--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.
node --watch index.js copy
--watch-path
Запускает Node.js в режиме наблюдения и указывает пути для наблюдения. В режиме наблюдения изменения в отслеживаемых путях приводят к перезапуску процесса Node.js. Это отключит наблюдение за требуемыми или импортированными модулями, даже при использовании в сочетании с --watch.
Этот флаг не может быть объединён с --check, --eval, --interactive, --test, или REPL.
node --watch-path=./src --watch-path=./tests index.js copy
Эта опция поддерживается только на macOS и Windows. При использовании на платформе, которая не поддерживает её, будет выброшено исключение ERR_FEATURE_UNAVAILABLE_ON_PLATFORM.
--watch-preserve-output
Отключить очистку консоли при перезапуске процесса в режиме наблюдения.
node --watch --watch-preserve-output test.js copy
--zero-fill-buffers
Автоматически заполняет нулями все только что выделенные экземпляры Buffer и SlowBuffer.
Переменные окружения
FORCE_COLOR=[1, 2, 3]
Переменная среды FORCE_COLOR используется для включения ANSI-раскрашенного вывода. Значение может быть:
-
1,true, или пустая строка''указывают поддержку 16-цветного режима, -
2для указания поддержки 256-цветного режима, или -
3для указания поддержки 16 миллионов цветов.
Когда используется FORCE_COLOR и установлено в поддерживаемое значение, переменные среды NO_COLOR, и NODE_DISABLE_COLORS игнорируются.
Любое другое значение приведет к отключению раскрашенного вывода.
NO_COLOR=<any>
NO_COLOR является псевдонимом для NODE_DISABLE_COLORS. Значение переменной окружения произвольное.
NODE_DEBUG=module[,…]
Список модулей ядра, разделенных дефисом, для которых необходимо отображать отладочную информацию.
NODE_DEBUG_NATIVE=module[,…]
Список модулей ядра C++, разделенных дефисом, для которых необходимо отображать отладочную информацию.
NODE_DISABLE_COLORS=1
При установке, цвета не будут использоваться в REPL.
NODE_EXTRA_CA_CERTS=file
При установке, хорошо известные корневые сертификаты (например, VeriSign) будут дополнены дополнительными сертификатами в file. Файл должен содержать один или несколько доверенных сертификатов в формате PEM. Сообщение будет выведено (один раз) с помощью process.emitWarning(), если файл отсутствует или имеет неправильный формат, но любые другие ошибки игнорируются.
Ни хорошо известные, ни дополнительные сертификаты не используются, когда свойство опций ca явно указано для клиента или сервера TLS или HTTPS.
Эта переменная окружения игнорируется, когда процесс Node.js запускается как 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-worker-
--conditions,-C --diagnostic-dir--disable-proto--disable-warning--disable-wasm-trap-handler--dns-result-order--enable-fips--enable-network-family-autoselection--enable-source-maps--experimental-abortcontroller--experimental-default-type--experimental-detect-module--experimental-import-meta-resolve--experimental-json-modules--experimental-loader--experimental-modules--experimental-network-imports--experimental-permission--experimental-policy--experimental-shadow-realm--experimental-specifier-resolution--experimental-top-level-await--experimental-vm-modules--experimental-wasi-unstable-preview1--experimental-wasm-modules--experimental-websocket--force-context-aware--force-fips--force-node-api-uncaught-exceptions-policy--frozen-intrinsics--heapsnapshot-near-heap-limit--heapsnapshot-signal--http-parser--icu-data-dir--import--input-type--insecure-http-parser--inspect-brk-
--inspect-port,--debug-port --inspect-publish-uid--inspect-wait--inspect--max-http-header-size--napi-modules--network-family-autoselection-attempt-timeout--no-addons--no-deprecation--no-experimental-fetch--no-experimental-global-customevent--no-experimental-global-webcrypto--no-experimental-repl-await--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--policy-integrity--preserve-symlinks-main--preserve-symlinks--prof-process--redirect-warnings--report-compact-
--report-dir,--report-directory --report-exclude-network--report-filename--report-on-fatalerror--report-on-signal--report-signal--report-uncaught-exception-
--require,-r --secure-heap-min--secure-heap--snapshot-blob--test-only--test-reporter-destination--test-reporter--test-shard--throw-deprecation--title--tls-cipher-list--tls-keylog--tls-max-v1.2--tls-max-v1.3--tls-min-v1.0--tls-min-v1.1--tls-min-v1.2--tls-min-v1.3--trace-atomics-wait--trace-deprecation--trace-event-categories--trace-event-file-pattern--trace-events-enabled--trace-exit--trace-sigint--trace-sync-io--trace-tls--trace-uncaught--trace-warnings--track-heap-objects--unhandled-rejections--use-bundled-ca--use-largepages--use-openssl-ca--v8-pool-size--watch-path--watch-preserve-output--watch--zero-fill-buffers
Разрешенные опции V8:
--abort-on-uncaught-exception--disallow-code-generation-from-strings--enable-etw-stack-walking--huge-max-old-generation-size--interpreted-frames-native-stack--jitless--max-old-space-size--max-semi-space-size--perf-basic-prof-only-functions--perf-basic-prof--perf-prof-unwinding-info--perf-prof--stack-trace-limit
--perf-basic-prof-only-functions, --perf-basic-prof, --perf-prof-unwinding-info, и --perf-prof доступны только в Linux.
--enable-etw-stack-walking доступна только в Windows.
NODE_PATH=path[:…]
Список директорий, добавляемых в путь поиска модулей, разделенных дефисом.
В Windows это список, разделённый ';'.
NODE_PENDING_DEPRECATION=1
При установке в 1, предупреждения о предстоящих устареваниях будут выводиться.
Предстоящие устаревания, в основном, идентичны предупреждениям об устаревании во время выполнения, за исключением того, что они по умолчанию отключены и не будут отображаться, если не установлен флаг командной строки --pending-deprecation, или переменная окружения NODE_PENDING_DEPRECATION=1. Предстоящие устаревания используются для предоставления своеобразной системы "предупреждения заранее", которую разработчики могут использовать для обнаружения использования устаревших API.
NODE_PENDING_PIPE_INSTANCES=instances
Установите количество ожидающих дескрипторов подключений к пайпу, когда сервер пайпа ожидает соединений. Это значение применяется только к Windows.
NODE_PRESERVE_SYMLINKS=1
При установке в 1, загрузчик модулей сохранит символические ссылки при разрешении и кэшировании модулей.
NODE_REDIRECT_WARNINGS=file
При установке, предупреждения процесса будут выводиться в указанный файл, а не в stderr. Файл будет создан, если он не существует, и будет добавлен, если он существует. Если при попытке записи предупреждения в файл произойдёт ошибка, предупреждение будет выведено в stderr. Это эквивалентно использованию флага командной строки --redirect-warnings=file.
NODE_REPL_EXTERNAL_MODULE=file
Путь к модулю Node.js, который будет загружен вместо встроенного REPL. Переопределение этого значения на пустую строку ('') позволит использовать встроенный REPL.
NODE_REPL_HISTORY=file
Путь к файлу, используемому для сохранения истории REPL. По умолчанию путь — ~/.node_repl_history, который переопределяется этой переменной. Установка значения в пустую строку ('' или ' ') отключает сохранение истории REPL.
NODE_SKIP_PLATFORM_CHECK=value
Если value равно '1', проверка поддержки платформы во время запуска Node.js будет пропущена. Node.js может работать неправильно. Любые проблемы, возникшие на неподдерживаемых платформах, не будут исправлены.
NODE_TEST_CONTEXT=value
Если value равно 'child', параметры отчета о тестах будут переопределены, и результаты тестов будут отправлены в стандартный вывод (stdout) в формате TAP. Если предоставлено любое другое значение, Node.js не гарантирует формат отчета или его стабильность.
NODE_TLS_REJECT_UNAUTHORIZED=value
Если value равно '0', проверка сертификатов отключена для TLS-соединений. Это делает TLS, и HTTPS, небезопасными. Использование этой переменной среды настоятельно не рекомендуется.
NODE_V8_COVERAGE=dir
При установке Node.js начнёт вывод данных покрытия кода JavaScript V8 и Source Map в указанную директорию (информация о покрытии записывается в файлы JSON с префиксом coverage).
NODE_V8_COVERAGE будет автоматически распространяться на дочерние процессы, что упрощает настройку приложений, вызывающих функции из семейства child_process.spawn(). NODE_V8_COVERAGE может быть установлено в пустую строку, чтобы предотвратить распространение.
Вывод покрытия
Покрытие выводится в виде массива объектов ScriptCoverage в корневом ключе result.
{
"result": [
{
"scriptId": "67",
"url": "internal/tty.js",
"functions": []
}
]
} copy Кэш карт сопоставления исходного кода
Если найдены, данные карт сопоставления исходного кода добавляются в корневой ключ source-map-cache объекта покрытия JSON.
source-map-cache — это объект с ключами, представляющими файлы, из которых были извлечены карты сопоставления, а значениями, которые включают URL исходной карты (в ключе url), обработанную информацию о Source Map v3 (в ключе data) и длину строк исходного файла (в ключе lineLengths).
{
"result": [
{
"scriptId": "68",
"url": "file:///absolute/path/to/source.js",
"functions": []
}
],
"source-map-cache": {
"file:///absolute/path/to/source.js": {
"url": "./path-to-map.json",
"data": {
"version": 3,
"sources": [
"file:///absolute/path/to/original.js"
],
"names": [
"Foo",
"console",
"info"
],
"mappings": "MAAMA,IACJC,YAAaC",
"sourceRoot": "./"
},
"lineLengths": [
13,
62,
38,
27
]
}
}
} copy
OPENSSL_CONF=file
Загрузка файла конфигурации OpenSSL при запуске. Это может быть использовано, среди прочего, для включения криптографии в соответствии со стандартом FIPS, если Node.js был скомпилирован с ./configure --openssl-fips.
Если используется командная опция --openssl-config, переменная среды игнорируется.
SSL_CERT_DIR=dir
Если --use-openssl-ca включен, это переопределяет и устанавливает директорию OpenSSL, содержащую доверенные сертификаты.
Обратите внимание, что если среда дочернего процесса не установлена явным образом, эта переменная среды будет унаследована любыми дочерними процессами, и если они используют OpenSSL, это может привести к доверию к тем же ЦС, что и у node.
SSL_CERT_FILE=file
Если --use-openssl-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 на основе синхронных системных API. API Node.js, которые используют пул потоков:
- все
fsAPI, за исключением API мониторинга файлов и тех, которые явно синхронны - асинхронные криптографические API, такие как
crypto.pbkdf2(),crypto.scrypt(),crypto.randomBytes(),crypto.randomFill(),crypto.generateKeyPair() dns.lookup()- все
zlibAPI, за исключением тех, которые явно синхронны
Поскольку пул потоков libuv имеет фиксированный размер, это означает, что если по какой-либо причине любой из этих API работает долго, другие (похоже, не связанные) API, работающие в пуле потоков libuv, будут испытывать ухудшение производительности. Для решения этой проблемы можно увеличить размер пула потоков libuv, задав переменную среды 'UV_THREADPOOL_SIZE' значением, большим, чем 4 (ее текущее значение по умолчанию). Дополнительные сведения см. в документации по пулу потоков libuv.
UV_USE_IO_URING=value
Включить или отключить использование libuv io_uring на поддерживаемых платформах.
На поддерживаемых платформах io_uring может значительно улучшить производительность различных асинхронных операций ввода-вывода.
io_uring по умолчанию отключен из-за проблем безопасности. Когда io_uring включен, приложения не должны изменять идентификатор пользователя процесса во время выполнения. В этом случае JavaScript-функции, такие как process.setuid(), недоступны, и встроенные модули не должны вызывать системные функции, такие как setuid(2).
Эта переменная среды реализуется зависимостью Node.js и может быть удалена в будущих версиях Node.js. Поведение этой переменной среды не гарантируется.
Полезные опции V8
У V8 есть свой набор опций командной строки. Любая опция командной строки V8, предоставленная node будет передана V8 для обработки. Опции V8 не имеют гарантии стабильности. Команда V8 сама не считает их частью официального API и оставляет за собой право на их изменение в любое время. Аналогично, они не покрываются гарантиями стабильности Node.js. Многие опции V8 представляют интерес только для разработчиков V8. Несмотря на это, есть небольшой набор опций V8, которые широко применимы к Node.js, и они описаны здесь:
--max-old-space-size=SIZE (в мегабайтах)
Устанавливает максимальный размер памяти для раздела старой памяти V8. По мере приближения потребления памяти к лимиту V8 будет тратить больше времени на сборку мусора, пытаясь освободить неиспользуемую память.
На машине с 2 ГБ памяти рассмотрите возможность установки этого значения в 1536 (1,5 ГБ), чтобы оставить немного памяти для других целей и избежать подкачки.
node --max-old-space-size=1536 index.js copy
--max-semi-space-size=SIZE (в мегабайтах)
Устанавливает максимальный размер полупространства для полупространства сборщика мусора scavenge V8 в МБ (мегабайтах). Увеличение максимального размера полупространства может улучшить производительность Node.js за счет большего потребления памяти.
Поскольку размер молодого поколения кучи V8 в три раза больше (см. YoungGenerationSizeFromSemiSpaceSize в V8) размера полупространства, увеличение на 1 МБ полупространства применяется к каждому из трех отдельных полупространств и увеличивает размер кучи на 3 МБ. Улучшение производительности зависит от вашей рабочей нагрузки (см. #42511).
Значение по умолчанию составляет 16 МБ для 64-битных систем и 8 МБ для 32-битных систем. Чтобы получить лучшую конфигурацию для вашего приложения, вы должны попробовать разные значения max-semi-space-size при выполнении бенчмарков для вашего приложения.
Например, бенчмарк на 64-битных системах:
for MiB in 16 32 64 128; do
node --max-semi-space-size=$MiB index.js
done copy
© 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-v20.x/docs/api/cli.html