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 модулей, если передан параметр --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-wasi
При использовании Модели разрешений, процесс по умолчанию не может создавать экземпляры WASI. По соображениям безопасности, вызов вызовет ERR_ACCESS_DENIED, если пользователь не передаст флаг --allow-wasi в основном процессе Node.js.
Пример:
const { WASI } = require('node:wasi');
// Attempt to bypass the permission
new WASI({
version: 'preview1',
// Attempt to mount the whole filesystem
preopens: {
'/': '/',
},
}); copy $ node --experimental-permission --allow-fs-read=* index.js
node:wasi:99
const wrap = new _WASI(args, env, preopens, stdio);
^
Error: Access to this API has been restricted
at new WASI (node:wasi:99:18)
at Object.<anonymous> (/home/index.js:3:1)
at Module._compile (node:internal/modules/cjs/loader:1476:14)
at Module._extensions..js (node:internal/modules/cjs/loader:1555:10)
at Module.load (node:internal/modules/cjs/loader:1288:32)
at Module._load (node:internal/modules/cjs/loader:1104:12)
at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:191:14)
at node:internal/main/run_main_module:30:49 {
code: 'ERR_ACCESS_DENIED',
permission: 'WASI',
} copy
--allow-worker
При использовании Модели разрешений, процесс по умолчанию не может создавать рабочие потоки. По соображениям безопасности, вызов вызовет ERR_ACCESS_DENIED, если пользователь не передаст флаг --allow-worker в основном процессе Node.js.
Пример:
const { Worker } = require('node:worker_threads');
// Attempt to bypass the permission
new Worker(__filename); copy $ node --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 Дополнительную информацию можно найти в документации API v8.startupSnapshot.
В настоящее время поддержка снимков во время выполнения является экспериментальной, т.к.:
- Модули пользовательского уровня пока не поддерживаются в снимке, поэтому может быть заснят только один единственный файл. Пользователи могут объединить свои приложения в один скрипт с помощью своего любимого средства сборки, прежде чем создавать снимок.
- Только часть встроенных модулей работает в снимке, хотя набор тестов Node.js проверяет, что несколько достаточно сложных приложений можно создать в снимке. Поддержка дополнительных модулей добавляется. Если при создании снимка произойдут какие-либо сбои или неисправности, пожалуйста, отправьте отчёт в следящем за проблемой трекере Node.js и свяжите его со следящей проблемой по снимкам пользовательских приложений.
--build-snapshot-config
Указывает путь к файлу конфигурации JSON, который настраивает поведение создания снимков.
В настоящее время поддерживаются следующие параметры:
-
builder<строка> Обязательный. Предоставляет имя скрипта, который выполняется перед созданием снимка, как если бы--build-snapshotбыл передан с именем основного скриптаbuilder. -
withoutCodeCache<булево> Необязательный. Включение кэша кода уменьшает время, затрачиваемое на компиляцию функций, включённых в снимок, ценой увеличения размера снимка и потенциального нарушения портативности снимка.
При использовании этого флага дополнительные скриптовые файлы, предоставленные в командной строке, не будут выполняться, а вместо этого будут интерпретироваться как обычные аргументы командной строки.
-c, --check
Синтаксическая проверка скрипта без выполнения.
--completion-bash
Выводит скрипт завершения bash для Node.js, который можно использовать.
node --completion-bash > node_bash_completion source node_bash_completion copy
-C condition, --conditions=condition
Включить экспериментальную поддержку пользовательских условий разрешения условных экспортов.
Разрешено любое количество пользовательских имен условий в виде строк.
Условия Node.js по умолчанию "node", "default", "import", и "require" всегда применяются в соответствии с определением.
Например, чтобы запустить модуль с разрешениями «разработка»:
node -C development app.js copy
--cpu-prof
Запускает профилировщик CPU V8 при запуске и записывает профиль 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.
--expose-gc
Этот флаг экспонирует расширение gc из V8.
if (globalThis.gc) {
globalThis.gc();
} copy
--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-network-family-autoselection
Включает алгоритм автоматического выбора семейства, если опции соединения явно это не отключают.
--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); в противном случае они будут обрабатываться как JavaScript модули ES.
--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-eventsource
Включить экспозицию EventSource Web API в глобальной области видимости.
--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флаг - WASI — управляемые через
--allow-wasiфлаг
--experimental-require-module
Поддержка загрузки синхронного графа модулей ES в require().
См. Загрузка ECMAScript модулей с помощью require().
--experimental-sea-config
Используйте этот флаг для создания BLOB, который можно вставить в двоичный файл Node.js для создания единого исполняемого приложения. Подробнее см. документацию по настройке.
--experimental-shadow-realm
Используйте этот флаг для включения поддержки ShadowRealm.
--experimental-test-coverage
При использовании совместно с модулем node:test, отчёт о покрытии кода генерируется как часть вывода исполнителя тестов. Если тесты не выполнялись, отчёт о покрытии кода не генерируется. Подробнее см. документацию по сбору данных о покрытии кода из тестов.
--experimental-test-module-mocks
Включить имитацию модулей в исполнителе тестов.
--experimental-test-snapshots
Включить тестирование снимков в исполнителе тестов.
--experimental-vm-modules
Включить экспериментальную поддержку модулей ES в модуле node:vm.
--experimental-wasi-unstable-preview1
Включить экспериментальную поддержку WebAssembly System Interface (WASI).
--experimental-wasm-modules
Включить экспериментальную поддержку модулей WebAssembly.
--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.
- Разрешить сообщение, содержащее как
Transfer-Encoding, так иContent-Lengthзаголовки. - Разрешить дополнительные данные после сообщения, когда
Connection: closeприсутствует. - Разрешить дополнительные кодировки передачи после
chunked. - Разрешить
\nиспользоваться в качестве разделителя токенов вместо\r\n. - Разрешить
\r\nне предоставляться после фрагмента. - Разрешить пробелы после размера фрагмента и перед
\r\n.
Всё вышеперечисленное подвергнет ваше приложение атаке подмены или отравления запросов. Избегайте использования этого параметра.
--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-navigator
Отключить экспонирование API Navigator в глобальном пространстве имён.
--no-experimental-global-webcrypto
Отключить экспонирование Web Crypto API в глобальном пространстве имён.
--no-experimental-repl-await
Используйте этот флаг для отключения `await` на верхнем уровне в REPL.
--no-experimental-websocket
Используйте этот флаг для отключения экспериментальной поддержки WebSocket.
--no-extra-info-on-fatal-exception
Скрыть дополнительную информацию об исключении, вызвавшем выход из программы.
--no-force-async-hooks-checks
Отключает проверки async_hooks во время выполнения. Они всё ещё будут включены динамически, когда включён async_hooks.
--no-global-search-paths
Не искать модули из глобальных путей, таких как $HOME/.node_modules и $NODE_PATH.
--no-network-family-autoselection
Отключает алгоритм автоматического выбора семейства, если опции подключения его явно не включают.
--no-warnings
Отключить все предупреждения процесса (включая предупреждения о устаревших функциях).
--node-memory-debug
Включить дополнительные проверки для отладки утечек памяти в внутренней части Node.js. Это обычно полезно только для разработчиков, отлаживающих сам Node.js.
--openssl-config=file
Загрузить файл конфигурации OpenSSL при запуске. Среди прочего, это можно использовать для включения криптографии, соответствующей стандарту FIPS, если Node.js построен с поддержкой 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.
--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 но выводит результат.
--experimental-print-required-tla
Этот флаг полезен только при включении --experimental-require-module.
Если ES-модуль, который require() содержит верхнеуровневый `await`, этот флаг позволяет Node.js оценить модуль, попытаться найти верхнеуровневые `await` и вывести их расположение, чтобы помочь пользователям их найти.
--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. Используйте --import для загрузки модуля ECMAScript. Модули, предварительно загруженные с помощью --require будут выполняться до модулей, предварительно загруженных с помощью --import.
--run
Выполняет указанную команду из объекта "scripts" в файле package.json. Если "command" не указан, он выведет список доступных скриптов.
--run переходит до корневого каталога и находит файл package.json для выполнения команды оттуда.
--run добавляет ./node_modules/.bin для каждого предка текущего каталога к PATH для выполнения бинарных файлов из разных папок, где присутствуют несколько папок node_modules, если ancestor-folder/node_modules/.bin является каталогом.
Например, следующая команда выполнит скрипт test пакета package.json в текущей папке:
$ node --run test copy
Вы также можете передавать аргументы команде. Любой аргумент после -- будет добавлен к скрипту:
$ node --run test -- --verbose copy
Умышленные ограничения
node --run не предназначен для соответствия поведению npm run или команд run других менеджеров пакетов. Реализация Node.js намеренно более ограничена, чтобы сосредоточиться на максимальной производительности для наиболее распространённых случаев использования. Некоторые функции других реализаций run умышленно исключены:
- Выполнение скриптов
preилиpostпомимо указанного скрипта. - Определение переменных среды, специфичных для менеджера пакетов.
Переменные окружения
Следующие переменные окружения устанавливаются при выполнении скрипта с помощью --run:
-
NODE_RUN_SCRIPT_NAME: Имя выполняемого скрипта. Например, если используется--runдля выполненияtest, значение этой переменной будетtest. -
NODE_RUN_PACKAGE_JSON_PATH: Путь к файлуpackage.json, который обрабатывается.
--secure-heap=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-name-pattern и --test-skip-pattern заданы, тесты должны удовлетворять обеим требованиям для выполнения.
--test-only
Настраивает тестовый запуск на выполнение только тестов верхнего уровня, у которых установлен параметр only.
--test-reporter
Репортёр тестов для использования при запуске тестов. Подробнее см. документацию по репортёрам тестов.
--test-reporter-destination
Место назначения соответствующего репортёра тестов. Подробнее см. документацию по репортёрам тестов.
--test-shard
Часть набора тестов для выполнения в формате <index>/<total>, где
index — положительное целое число, индекс раздела total — положительное целое число, общее количество разделов. Эта команда разделит все файлы тестов на total равных частей и выполнит только те, которые попадут в index раздел.
Например, чтобы разбить набор тестов на три части, используйте следующее:
node --test --test-shard=1/3 node --test --test-shard=2/3 node --test --test-shard=3/3 copy
--test-skip-pattern
Регулярное выражение, которое настраивает тестовый запуск на пропуск тестов, имя которых соответствует заданному шаблону. Подробнее см. документацию по фильтрации тестов по имени.
Если и --test-name-pattern и --test-skip-pattern заданы, тесты должны удовлетворять обеим требованиям для выполнения.
--test-timeout
Количество миллисекунд, после которых выполнение теста завершится с ошибкой. Если не указано, подтесты наследуют это значение от родительского теста. Значение по умолчанию — Infinity.
--test-update-snapshots
Перегенерирует файл снимков, используемый тестовым запуском для тестирования снимков. Node.js необходимо запустить с флагом --experimental-test-snapshots для использования этой функции.
--throw-deprecation
Выбрасывать ошибки для устаревших функций.
--title=title
Установить process.title при запуске.
--tls-cipher-list=list
Указать альтернативный список шифров TLS по умолчанию. Требуется, чтобы Node.js был скомпилирован с поддержкой криптографии (по умолчанию).
--tls-keylog=file
Записать материал ключа TLS в файл. Материал ключа в формате NSS SSLKEYLOGFILE и может быть использован программным обеспечением (например, Wireshark) для дешифрования трафика TLS.
--tls-max-v1.2
Установить tls.DEFAULT_MAX_VERSION в 'TLSv1.2'. Используйте для отключения поддержки TLSv1.3.
--tls-max-v1.3
Установить значение по умолчанию для tls.DEFAULT_MAX_VERSION в 'TLSv1.3'. Используйте для включения поддержки TLSv1.3.
--tls-min-v1.0
Установить значение по умолчанию для tls.DEFAULT_MIN_VERSION в 'TLSv1'. Используйте для совместимости со старыми клиентами или серверами TLS.
--tls-min-v1.1
Установить значение по умолчанию для tls.DEFAULT_MIN_VERSION в 'TLSv1.1'. Используйте для совместимости со старыми клиентами или серверами TLS.
--tls-min-v1.2
Установить значение по умолчанию для tls.DEFAULT_MIN_VERSION в 'TLSv1.2'. Это значение по умолчанию для версий 12.x и выше, но опция поддерживается для совместимости со старыми версиями Node.js.
--tls-min-v1.3
Установить значение по умолчанию для tls.DEFAULT_MIN_VERSION в 'TLSv1.3'. Используйте для отключения поддержки TLSv1.2, которая не является такой же безопасной, как TLSv1.3.
--trace-atomics-wait
Печать кратких сводок вызовов 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.
--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_COMPILE_CACHE=dir
При установке, когда Node.js компилирует модуль CommonJS или ECMAScript, он будет использовать кэшированный код V8 на диске, сохраненный в указанном каталоге, для ускорения компиляции. Это может замедлить первую загрузку графа модулей, но последующие загрузки того же графа модулей могут значительно ускориться, если содержимое модулей не изменилось.
Для очистки сгенерированного кэша кода достаточно удалить каталог. Он будет создан заново при следующем использовании того же каталога для NODE_COMPILE_CACHE.
Кэш компиляции, сгенерированный одной версией Node.js, не может использоваться другой версией Node.js. Кэш, сгенерированный различными версиями Node.js, будет храниться отдельно, если для сохранения кэша используется один и тот же каталог, поэтому они могут сосуществовать.
Примечание: в настоящее время при использовании этого с V8 JavaScript покрытие кода, покрытие, собираемое V8, может быть менее точным в функциях, которые десериализуются из кэша кода. Рекомендуется отключить это при запуске тестов для получения точного покрытия.
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 запускается как setuid root или имеет установленные Linux файловые возможности.
Переменная среды NODE_EXTRA_CA_CERTS считывается только при первом запуске процесса Node.js. Изменение значения во время выполнения с помощью process.env.NODE_EXTRA_CA_CERTS не влияет на текущий процесс.
NODE_ICU_DATA=file
Путь к данным ICU (Intl объект) данных. Будет расширять связанные данные при компиляции с поддержкой small-icu.
NODE_NO_WARNINGS=1
При установке в 1, предупреждения процесса будут отключены.
NODE_OPTIONS=options...
Список командных параметров, разделенных пробелами. options... интерпретируются перед командными параметрами, поэтому командные параметры переопределяют или дополняют после всего, что в options.... Node.js завершит работу с ошибкой, если используется параметр, не разрешенный в среде, такой как -p или файл скрипта.
Если значение параметра содержит пробел, его можно экранировать с помощью двойных кавычек:
NODE_OPTIONS='--require "./my path/file.js"' copy
Флаг-синглтон, переданный в качестве командного параметра, переопределяет тот же флаг, переданный в NODE_OPTIONS:
# The inspector will be available on port 5555 NODE_OPTIONS='--inspect=localhost:4444' node --inspect=localhost:5555 copy
Флаг, который можно передавать несколько раз, будет обрабатываться так, как будто его NODE_OPTIONS экземпляры передавались сначала, а затем его командные экземпляры - позже:
NODE_OPTIONS='--require "./a.js"' node --require "./b.js" # is equivalent to: node --require "./a.js" --require "./b.js" copy
Разрешенные параметры Node.js приведены в следующем списке. Если параметр поддерживает варианты --XX и --no-XX, оба поддерживаются, но только один включён в список ниже.
--allow-addons--allow-child-process--allow-fs-read--allow-fs-write--allow-wasi--allow-worker-
--conditions,-C --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-eventsource--experimental-import-meta-resolve--experimental-json-modules--experimental-loader--experimental-modules--experimental-network-imports--experimental-permission--experimental-print-required-tla--experimental-require-module--experimental-shadow-realm--experimental-specifier-resolution--experimental-top-level-await--experimental-vm-modules--experimental-wasi-unstable-preview1--experimental-wasm-modules--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-navigator--no-experimental-global-webcrypto--no-experimental-repl-await--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--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--expose-gc--huge-max-old-generation-size--interpreted-frames-native-stack--jitless--max-old-space-size--max-semi-space-size--perf-basic-prof-only-functions--perf-basic-prof--perf-prof-unwinding-info--perf-prof--stack-trace-limit
--perf-basic-prof-only-functions, --perf-basic-prof, --perf-prof-unwinding-info, и --perf-prof доступны только в Linux.
--enable-etw-stack-walking доступен только в Windows.
NODE_PATH=path[:…]
':'-разделенный список каталогов, добавляемых в путь поиска модулей.
В Windows это ';'-разделенный список.
NODE_PENDING_DEPRECATION=1
При установке в 1, выводить предупреждения о предстоящем устаревании.
Предстоящие устаревания в целом идентичны предупреждениям о устаревании во время выполнения с заметным исключением, что они по умолчанию выключены и не будут выводиться, если не установлен командный флаг --pending-deprecation, или переменная среды NODE_PENDING_DEPRECATION=1. Предстоящие устаревания используются для предоставления своеобразной системы "раннего предупреждения", которую разработчики могут использовать для обнаружения использования устаревшего API.
NODE_PENDING_PIPE_INSTANCES=instances
Установите количество ожидающих дескрипторов подключения к пайпу, когда сервер пайпа ожидает подключений. Это ограничение применяется только к Windows.
NODE_PRESERVE_SYMLINKS=1
При установке значения в 1, загрузчик модулей сохраняет символические ссылки при разрешении и кэшировании модулей.
NODE_REDIRECT_WARNINGS=file
При установке, предупреждения процесса будут выводиться в указанный файл вместо вывода в stderr. Файл будет создан, если он не существует, и будет дописываться в него, если он существует. Если при попытке записать предупреждение в файл произойдет ошибка, предупреждение будет выведено в stderr. Это эквивалентно использованию флага командной строки --redirect-warnings=file.
NODE_REPL_EXTERNAL_MODULE=file
Путь к модулю Node.js, который будет загружен вместо встроенного REPL. Переопределение этого значения на пустую строку ('') будет использовать встроенный REPL.
NODE_REPL_HISTORY=file
Путь к файлу, используемому для сохранения истории REPL. По умолчанию путь ~/.node_repl_history, который переопределяется этой переменной. Установка значения в пустую строку ('' или ' ') отключает сохранение истории REPL.
NODE_SKIP_PLATFORM_CHECK=value
Если value равно '1', проверка поддержки платформы пропускается во время запуска Node.js. Node.js может не работать правильно. Любые проблемы, возникшие на недопустимых платформах, не будут исправлены.
NODE_TEST_CONTEXT=value
Если value равно 'child', параметры отчета тестов будут переопределены, и выходные данные тестов будут отправлены в stdout в формате TAP. Если задано любое другое значение, Node.js не дает гарантий относительно используемого формата отчета или его стабильности.
NODE_TLS_REJECT_UNAUTHORIZED=value
Если value равно '0', проверка сертификатов отключена для TLS-соединений. Это делает TLS, и HTTPS, соответственно, небезопасными. Использование этой переменной среды крайне не рекомендуется.
NODE_V8_COVERAGE=dir
При установке, Node.js начнет выводить данные о покрытии кода JavaScript V8 и карты сопоставления исходного кода в указанный каталог (информация о покрытии записывается в файлы JSON с префиксом coverage).
NODE_V8_COVERAGE автоматически передается дочерним процессам, что упрощает инструментирование приложений, которые вызывают функции семейства child_process.spawn(). NODE_V8_COVERAGE может быть установлено в пустую строку, чтобы предотвратить распространение.
Выходные данные покрытия
Покрытие выводится в виде массива объектов ScriptCoverage по ключу верхнего уровня result:
{
"result": [
{
"scriptId": "67",
"url": "internal/tty.js",
"functions": []
}
]
} copy Кэш карт сопоставления исходного кода
Если найдено, данные карты сопоставления исходного кода добавляются к ключу верхнего уровня source-map-cache в объекте покрытия JSON.
source-map-cache — это объект с ключами, представляющими файлы, из которых были извлечены карты сопоставления исходного кода, и значениями, которые включают исходный URL карты сопоставления (в ключе url), обработанную информацию карты сопоставления Source Map v3 (в ключе data) и длину строк файла исходного кода (в ключе lineLengths).
{
"result": [
{
"scriptId": "68",
"url": "file:///absolute/path/to/source.js",
"functions": []
}
],
"source-map-cache": {
"file:///absolute/path/to/source.js": {
"url": "./path-to-map.json",
"data": {
"version": 3,
"sources": [
"file:///absolute/path/to/original.js"
],
"names": [
"Foo",
"console",
"info"
],
"mappings": "MAAMA,IACJC,YAAaC",
"sourceRoot": "./"
},
"lineLengths": [
13,
62,
38,
27
]
}
}
} copy
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 потоков.
Асинхронные системные API используются Node.js по возможности, но там, где их нет, используется пул потоков libuv для создания асинхронных API Node на основе синхронных системных API. Node.js API, использующие пул потоков:
- все
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, и они документированы здесь:
--abort-on-uncaught-exception
--disallow-code-generation-from-strings
--enable-etw-stack-walking
--expose-gc
--harmony-shadow-realm
--huge-max-old-generation-size
--jitless
--interpreted-frames-native-stack
--prof
--perf-basic-prof
--perf-basic-prof-only-functions
--perf-prof
--perf-prof-unwinding-info
--max-old-space-size=SIZE (в мегабайтах)
Устанавливает максимальный размер памяти раздела старой памяти V8. По мере приближения к пределу потребления памяти V8 будет тратить больше времени на сборку мусора, пытаясь освободить неиспользуемую память.
На машине с 2 ГБ памяти рекомендуется установить это значение в 1536 (1,5 ГБ), чтобы оставить некоторую память для других задач и избежать подкачки.
node --max-old-space-size=1536 index.js copy
--max-semi-space-size=SIZE (в мегабайтах)
Устанавливает максимальный размер полупространства для мусорного сборщика V8 полупространства в МиБ (мегабайтах). Увеличение максимального размера полупространства может улучшить производительность 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
--security-revert
--stack-trace-limit=limit
Максимальное количество кадров стека для сбора в трассировке стека ошибки. Установка значения 0 отключает сбор трассировки стека. Значение по умолчанию составляет 10.
node --stack-trace-limit=12 -p -e "Error.stackTraceLimit" # prints 12 copy
© Joyent, Inc. and other Node contributors
Licensed under the MIT License.
Node.js is a trademark of Joyent, Inc. and is used with its permission.
We are not endorsed by or affiliated with Joyent.
https://nodejs.org/api/cli.html