Интерфейс командной строки¶
В Node.js есть набор опций командной строки: встроенная отладка, разные способы запуска скриптов и другие параметры среды выполнения.
Чтобы открыть эту документацию как страницу man в терминале, выполните man node.
Краткий синтаксис¶
node [options] [V8 options] [<program-entry-point> | -e "script" | -] [--] [arguments]
node inspect [<program-entry-point> | -e "script" | <host>:<port>] …
node --v8-options
Запуск без аргументов открывает REPL.
Подробнее о node inspect — в документации отладчика.
Точка входа программы¶
Точка входа — строка в стиле спецификатора модуля. Если это не абсолютный путь, он разрешается относительно текущего рабочего каталога. Затем строка разрешается так, как если бы к ней обратились через require() из текущего каталога. Если файл не найден, выбрасывается ошибка.
По умолчанию найденный путь загружается как при require(), если не выполнено одно из условий ниже — тогда загрузка идёт как при import():
- процесс запущен с флагом, принудительно загружающим точку входа через загрузчик ECMAScript-модулей, например
--import; - у файла расширение
.mjs,.mtsили.wasm; - у файла нет расширения
.cjs, и у ближайшего родительскогоpackage.jsonв корне указано поле"type"со значением"module".
См. разрешение и загрузку модулей.
Опции¶
Стабильность: 2 — Стабильная
Во всех опциях, включая опции V8, слова в имени можно разделять и дефисом (-), и подчёркиванием (_). Например, --pending-deprecation эквивалентно --pending_deprecation.
Если опция с одним значением (например --max-http-header-size) передана несколько раз, используется последнее значение. Опции из командной строки имеют приоритет над опциями из переменной окружения NODE_OPTIONS.
-¶
Псевдоним stdin: как в других утилитах, скрипт читается из stdin, остальные аргументы передаются этому скрипту.
--¶
Конец опций Node.js; всё после -- передаётся скрипту. Если перед -- не было имени файла скрипта и не было -e/печати, следующий аргумент считается именем файла скрипта.
--abort-on-uncaught-exception¶
Аварийное завершение вместо обычного выхода позволяет получить core dump для постмортем-анализа в отладчике (lldb, gdb, mdb и т. п.).
Даже с этим флагом поведение можно изменить через process.setUncaughtExceptionCaptureCallback() (и через модуль node:domain, который её использует).
--allow-addons¶
Стабильность: 1.1 — Активная разработка
При модели разрешений нативные аддоны по умолчанию недоступны. Попытка загрузки приведёт к ERR_DLOPEN_DISABLED, если при запуске Node.js явно не передан --allow-addons.
Пример:
1 2 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | |
--allow-child-process¶
Стабильность: 1.1 — активная разработка
При модели разрешений процесс по умолчанию не может порождать дочерние процессы. Попытка вызовет ERR_ACCESS_DENIED, если при запуске Node.js явно не указан флаг --allow-child-process.
Пример:
1 2 3 4 5 6 | |
1 2 3 4 5 6 7 8 9 10 | |
API child_process.fork() наследует аргументы выполнения родителя. Если Node.js запущен с моделью разрешений и флагом --allow-child-process, дочерние процессы через child_process.fork() получают соответствующие флаги автоматически.
Для child_process.spawn() то же правило, но флаги передаются через переменную окружения NODE_OPTIONS, а не напрямую в аргументах процесса.
--allow-fs-read¶
Флаг задаёт права чтения ФС в модели разрешений.
Допустимые аргументы --allow-fs-read:
*— разрешить все операцииFileSystemRead.- Несколько путей — несколькими флагами
--allow-fs-read. Пример:--allow-fs-read=/folder1/ --allow-fs-read=/folder2/
Примеры см. в разрешениях файловой системы.
У модуля инициализации и пользовательских модулей -r есть неявное право на чтение.
1 | |
custom-require.js,custom-require-2.jsиindex.jsпо умолчанию входят в список разрешённых для чтения.
1 2 3 | |
--allow-fs-write¶
Флаг задаёт права записи ФС в модели разрешений.
Допустимые аргументы --allow-fs-write:
*— разрешить все операцииFileSystemWrite.- Несколько путей — несколькими флагами
--allow-fs-write.
Разделитель запятой в одном флаге больше не допускается; при передаче одного флага с запятой будет предупреждение.
Примеры см. в разрешениях файловой системы.
--allow-inspector¶
Стабильность: 1.0 — ранняя разработка
При модели разрешений процесс не может подключаться по протоколу инспектора.
Иначе будет ERR_ACCESS_DENIED, пока при запуске не указан --allow-inspector.
Пример:
1 2 3 4 | |
1 2 3 4 | |
--allow-net¶
Стабильность: 1.1 — активная разработка
При модели разрешений сеть по умолчанию недоступна.
Попытка вызовет ERR_ACCESS_DENIED, пока при запуске не указан --allow-net.
Пример:
1 2 3 4 5 6 7 | |
1 2 3 4 | |
--allow-wasi¶
Стабильность: 1.1 — активная разработка
При модели разрешений экземпляры WASI по умолчанию создать нельзя. Вызов вызовет ERR_ACCESS_DENIED, пока в главном процессе Node.js явно не указан --allow-wasi.
Пример:
1 2 3 4 5 6 7 8 9 | |
1 2 3 4 5 6 7 | |
--allow-worker¶
Стабильность: 1.1 — активная разработка
При модели разрешений потоки Worker по умолчанию создать нельзя. Вызов вызовет ERR_ACCESS_DENIED, пока в главном процессе явно не указан --allow-worker.
Пример:
1 2 3 | |
1 2 3 4 5 6 7 | |
--build-sea=config¶
Стабильность: 1.1 — активная разработка
Собирает один исполняемый файл из JSON-конфигурации. Аргумент — путь к файлу; если не абсолютный, разрешается относительно текущего каталога.
Поля конфигурации, кроссплатформенные замечания и API ресурсов см. в документации по single executable.
--build-snapshot¶
При завершении процесса создаётся снимок (snapshot blob) и записывается на диск; позже его можно загрузить через --snapshot-blob.
При сборке снимка, если --snapshot-blob не указан, файл по умолчанию пишется как snapshot.blob в текущий рабочий каталог. Иначе — по пути из --snapshot-blob.
1 2 3 4 5 6 7 8 9 10 11 | |
API v8.startupSnapshot API позволяет задать точку входа на этапе сборки снимка, без дополнительного скрипта при десериализации:
1 2 3 4 | |
Подробнее — в документации v8.startupSnapshot API.
Сейчас при сборке снимка поддерживается только одна точка входа; можно подключать встроенные модули, но не дополнительные пользовательские — приложение обычно собирают в один скрипт бандлером до сборки снимка.
Гарантировать сериализуемость всех встроенных модулей сложно, и их число растёт; лишь часть встроенных модулей надёжно проверена на сериализуемость при сборке снимка. Тесты Node.js проверяют несколько относительно сложных приложений. Список встроенных модулей, захваченных встроенным снимком Node.js, считается поддерживаемым. Если при сборке встречается встроенный модуль, который нельзя сериализовать, процесс сборки снимка может аварийно завершиться; типичный обход — отложить загрузку такого модуля до выполнения, через v8.startupSnapshot.setDeserializeMainFunction() или v8.startupSnapshot.addDeserializeCallback(). Если нужна сериализация дополнительного модуля при сборке снимка, создайте запрос в трекере задач Node.js и сошлитесь на задачу отслеживания пользовательских снимков.
--build-snapshot-config¶
Указывает путь к JSON-файлу конфигурации, который задаёт параметры создания снимка.
Поддерживаются такие поля:
builder<string>Обязательное. Имя скрипта, который выполняется перед сборкой снимка, как если бы был передан--build-snapshotсbuilderв качестве основного скрипта.withoutCodeCache<boolean>Необязательно. Включение кэша кода ускоряет компиляцию функций из снимка, но увеличивает размер и может ухудшить переносимость снимка.
С этим флагом дополнительные файлы скриптов в командной строке не выполняются — они интерпретируются как обычные аргументы.
-c, --check¶
Проверить синтаксис скрипта без выполнения.
--completion-bash¶
Выводит bash-скрипт автодополнения для Node.js, который можно подключить через source.
1 2 | |
-C condition, --conditions=condition¶
Предоставить пользовательские условия разрешения условных экспортов.
Допускается любое количество пользовательских строковых имён условий.
Условия Node.js по умолчанию — "node", "default", "import" и "require" — всегда применяются, как задано.
Например, запуск с разрешениями для режима «development»:
1 | |
--cpu-prof¶
Запускает профилировщик CPU V8 при запуске и записывает профиль CPU на диск перед выходом.
Если --cpu-prof-dir не указан, созданный профиль помещается в текущий рабочий каталог.
Если --cpu-prof-name не указан, созданный профиль называется CPU.${yyyymmdd}.${hhmmss}.${pid}.${tid}.${seq}.cpuprofile.
1 2 3 | |
Если --cpu-prof-name указан, предоставленное значение используется как шаблон для имени файла. Поддерживается следующий плейсхолдер и он будет заменён во время выполнения:
${pid}— текущий ID процесса
1 2 3 | |
--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-proto=mode¶
Отключает свойство Object.prototype.__proto__. Если mode равно delete, свойство удаляется полностью. Если mode равно throw, обращения к свойству вызывают исключение с кодом ERR_PROTO_ACCESS.
--disable-sigusr1¶
Отключает возможность запуска отладочного сеанса путём отправки сигнала SIGUSR1 процессу.
--disable-warning=code-or-type¶
Стабильность: 1.1 - Активная разработка
Отключает конкретные предупреждения процесса по code или type.
Предупреждения, выдаваемые через process.emitWarning(), могут содержать code и type. Этот параметр подавляет предупреждения с совпадающим code или type.
Список предупреждений об устаревании.
Основные типы предупреждений в Node.js: DeprecationWarning и ExperimentalWarning
Например, следующий скрипт не будет выдавать предупреждение DEP0025 require('node:sys'), если запустить его с node --disable-warning=DEP0025:
1 | |
1 | |
Например, следующий скрипт будет выдавать DEP0025 require('node:sys'), но не будет выдавать предупреждения типа Experimental Warning (например, ExperimentalWarning: vm.measureMemory is an experimental feature в <=v21), если запустить его с node --disable-warning=ExperimentalWarning:
1 2 3 4 | |
1 2 3 4 | |
--disable-wasm-trap-handler¶
Node.js включает проверки границ WebAssembly в V8 на основе trap handler на 64-битных платформах, что заметно повышает производительность WebAssembly за счёт отказа от inline-проверок границ. Для этой оптимизации требуется выделять большую область виртуальной памяти на каждый экземпляр памяти WebAssembly (сейчас обычно 8 ГБ для 32-битной памяти WebAssembly и 16 ГБ для 64-битной), чтобы перехватывать выход за границы. На большинстве 64-битных платформ адресного пространства виртуальной памяти обычно достаточно (около 128 ТБ) для типичных сценариев использования WebAssembly, но если на машине вручную ограничена виртуальная память (например, через ulimit -v), выделение памяти WebAssembly с большей вероятностью завершится ошибкой WebAssembly.Memory(): could not allocate memory.
При запуске Node.js автоматически проверяет, достаточно ли доступной виртуальной памяти для выделения хотя бы одной области, и если нет, то оптимизация trap-handler автоматически отключается, чтобы WebAssembly всё ещё мог выполняться с inline-проверками границ (с менее оптимальной производительностью). Но если приложению нужно создать много экземпляров памяти WebAssembly, а на машине при этом всё ещё установлен относительно высокий лимит виртуальной памяти, выделение памяти для WebAssembly может по-прежнему завершаться ошибкой быстрее, чем ожидается, из-за увеличенного потребления виртуальной памяти.
--disable-wasm-trap-handler полностью отключает эту оптимизацию, поэтому экземпляры памяти WebAssembly всегда используют inline-проверки границ вместо резервирования больших областей виртуальной памяти. Это позволяет создавать больше экземпляров, когда доступное процессу Node.js адресное пространство виртуальной памяти ограничено.
--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 для трассировок стека.
При использовании транспилятора, такого как TypeScript, трассировки стека, выбрасываемые приложением, ссылаются на транспилированный код, а не на исходную позицию. --enable-source-maps включает кэширование Source Maps и делает всё возможное, чтобы сообщать трассировки стека относительно исходного файла.
Переопределение Error.prepareStackTrace может предотвратить модификацию трассировки стека --enable-source-maps. Вызывайте и возвращайте результаты оригинального Error.prepareStackTrace в переопределяющей функции, чтобы модифицировать трассировку стека с помощью source maps.
1 2 3 4 5 6 | |
Примечание: Включение source maps может ввести задержку в ваше приложение при доступе к Error.stack. Если вы часто обращаетесь к Error.stack в вашем приложении, учитывайте влияние на производительность --enable-source-maps.
--entry-url¶
Стабильность: 1 - Экспериментальная
Когда присутствует, Node.js будет интерпретировать точку входа как URL, а не как путь.
Следует правилам разрешения ECMAScript модулей.
Любой параметр запроса или хэш в URL будут доступны через import.meta.url.
1 2 3 | |
--env-file-if-exists=file¶
Поведение такое же, как у --env-file, но ошибка не выбрасывается, если файл не существует.
--env-file=file¶
Загружает переменные окружения из файла относительно текущего каталога, делая их доступными для приложений в process.env. Переменные окружения, которые настраивают Node.js, такие как NODE_OPTIONS, анализируются и применяются. Если одна и та же переменная определена в окружении и в файле, приоритет имеет значение из окружения.
Можно передать несколько аргументов --env-file. Последующие файлы переопределяют существующие переменные, определённые в предыдущих файлах.
Ошибка выбрасывается, если файл не существует.
1 | |
Формат файла должен быть таким: одна строка на каждую пару ключ-значение переменной окружения, разделённых символом =:
1 | |
Любой текст после # считается комментарием:
1 2 | |
Значения могут начинаться и заканчиваться следующими кавычками: `, " или '. В итоговое значение они не входят.
1 | |
Поддерживаются многострочные значения:
1 2 3 | |
Ключевое слово export перед ключом игнорируется:
1 | |
Если нужно загружать переменные окружения из файла, который может не существовать, используйте вместо этого флаг --env-file-if-exists.
-e, --eval "script"¶
Оценивает следующий аргумент как JavaScript. Модули, которые предопределены в REPL, также могут использоваться в script.
Если script начинается с -, передайте его с помощью = (например, node --print --eval=-42), чтобы он был проанализирован как значение --eval.
В Windows, используя cmd.exe, одинарная кавычка не будет работать правильно, потому что она распознаёт только двойные " для цитирования. В Powershell или Git bash, оба ' и " пригодны для использования.
Возможно запускать код, содержащий встроенные типы, если не предоставлен флаг --no-strip-types.
--experimental-addon-modules¶
Стабильность: 1.0 - Ранняя разработка
Включает экспериментальную поддержку импорта для аддонов .node.
--experimental-config-file=config¶
Стабильность: 1.0 - Ранняя разработка
Если присутствует, Node.js будет искать файл конфигурации по указанному пути. Node.js прочитает файл конфигурации и применит настройки. Файл конфигурации должен быть JSON-файлом со следующей структурой. vX.Y.Z в $schema должен быть заменён на версию Node.js, которую вы используете.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | |
Файл конфигурации поддерживает параметры, специфичные для пространств имён:
-
Поле
nodeOptionsсодержит CLI-флаги, разрешённые вNODE_OPTIONS. -
Поля пространств имён, такие как
test,watchиpermission, содержат конфигурацию, специфичную для соответствующей подсистемы.
Когда пространство имён присутствует в файле конфигурации, Node.js автоматически включает соответствующий флаг (например, --test, --watch, --permission). Это позволяет настраивать параметры конкретной подсистемы без явной передачи флага в командной строке.
Например:
1 2 3 4 5 | |
эквивалентно:
1 | |
Чтобы отключить автоматический флаг, продолжая использовать параметры пространства имён, вы можете явно установить флаг в false в пространстве имён:
1 2 3 4 5 6 | |
Флаги, не выполняющие никаких действий, не поддерживаются. В настоящее время поддерживаются не все флаги V8.
Возможно использовать официальную JSON-схему для валидации файла конфигурации, которая может варьироваться в зависимости от версии Node.js. Каждый ключ в файле конфигурации соответствует флагу, который можно передать как аргумент командной строки. Значение ключа — это значение, которое будет передано флагу.
Например, приведённый выше файл конфигурации эквивалентен следующим аргументам командной строки:
1 | |
Приоритет конфигурации таков:
NODE_OPTIONSи параметры командной строки- Файл конфигурации
NODE_OPTIONSиз dotenv-файла
Значения из файла конфигурации не переопределяют значения из переменных окружения и параметров командной строки, но переопределяют значения из файла NODE_OPTIONS, разобранного флагом --env-file.
Ключи не могут дублироваться в том же или разных пространствах имён.
Парсер конфигурации выдаст ошибку, если файл конфигурации содержит неизвестные ключи или ключи, которые нельзя использовать в пространстве имён.
Node.js не очищает и не валидирует пользовательскую конфигурацию, поэтому НИКОГДА не используйте недоверенные файлы конфигурации.
--experimental-default-config-file¶
Стабильность: 1.0 - Ранняя разработка
Если флаг --experimental-default-config-file присутствует, Node.js будет искать файл node.config.json в текущем рабочем каталоге и загрузит его как файл конфигурации.
--experimental-eventsource¶
Включает экспозицию EventSource Web API в глобальную область видимости.
--experimental-import-meta-resolve¶
Включает экспериментальную поддержку import.meta.resolve() для родительского URL, которая позволяет передавать второй аргумент parentURL для контекстного разрешения.
Ранее блокировала всю функцию import.meta.resolve.
--experimental-inspector-network-resource¶
Стабильность: 1.1 - Активная разработка
Включает экспериментальную поддержку сетевых ресурсов инспектора.
--experimental-loader=module¶
Этот флаг не рекомендуется и может быть удалён в будущей версии Node.js. Вместо этого используйте
--importсregister().
Указывает module, содержащий экспортируемые асинхронные хуки настройки модулей. module может быть любой строкой, допустимой в качестве import-спецификатора.
Для использования этой возможности с моделью разрешений требуется --allow-worker.
--experimental-network-inspection¶
Стабильность: 1 - Экспериментальная
Включает экспериментальную поддержку сетевой инспекции с Chrome DevTools.
--experimental-print-required-tla¶
Если ES-модуль, который require()'d, содержит await верхнего уровня, этот флаг позволяет Node.js оценить модуль, попытаться найти верхние await, и вывести их местоположение, чтобы помочь пользователям найти их.
--experimental-quic¶
Стабильность: 1.1 - Активная разработка
Включает экспериментальную поддержку протокола QUIC.
--experimental-sea-config¶
Стабильность: 1 - Экспериментальная
Используйте этот флаг для генерации blob, который можно внедрить в бинарный файл Node.js для создания одного исполняемого приложения. См. документацию о этой конфигурации для деталей.
--experimental-shadow-realm¶
Используйте этот флаг для включения поддержки ShadowRealm.
--experimental-storage-inspection¶
Стабильность: 1.1 - Активная разработка
Включает экспериментальную поддержку инспекции хранилища
--experimental-stream-iter¶
Стабильность: 1 - Экспериментальная
Включает экспериментальный модуль node:stream/iter.
--experimental-test-coverage¶
При использовании вместе с модулем node:test отчёт о покрытии кода генерируется как часть вывода средства запуска тестов. Если тесты не запускались, отчёт о покрытии не создаётся. Подробнее см. в документации о сборе покрытия кода из тестов.
--experimental-test-module-mocks¶
Стабильность: 1.0 - Ранняя разработка
Включает подмену модулей в средстве запуска тестов.
Для использования этой возможности с моделью разрешений требуется --allow-worker.
--experimental-vm-modules¶
Включает экспериментальную поддержку ES-модулей в модуле node:vm.
--experimental-wasi-unstable-preview1¶
Включает экспериментальную поддержку WebAssembly System Interface (WASI).
--experimental-worker-inspection¶
Стабильность: 1.1 - Активная разработка
Включает экспериментальную поддержку инспекции worker с Chrome DevTools.
--expose-gc¶
Стабильность: 1 - Экспериментальная. Этот флаг унаследован от V8 и может измениться в вышестоящем проекте.
Этот флаг делает доступным расширение gc из V8.
1 2 3 | |
--force-context-aware¶
Отключает загрузку нативных аддонов, которые не являются context-aware.
--force-fips¶
Принудительно включает FIPS-совместимую криптографию при запуске. (Её нельзя отключить из кода скрипта.) (Требования те же, что и у --enable-fips.)
--force-node-api-uncaught-exceptions-policy¶
Принуждает событие uncaughtException для асинхронных обратных вызовов Node-API.
Чтобы предотвратить сбой процесса из-за существующего аддона, этот флаг по умолчанию не включён. В будущем этот флаг будет включён по умолчанию для принуждения правильного поведения.
--frozen-intrinsics¶
Стабильность: 1 - Экспериментальная
Включает экспериментальные замороженные intrinsics, такие как Array и Object.
Поддерживается только корневой контекст. Нет гарантии, что globalThis.Array действительно является ссылкой на intrinsic по умолчанию. Код может сломаться под этим флагом.
Чтобы позволить добавлять полифиллы, --require и --import оба запускаются до заморозки intrinsics.
--heap-prof¶
Запускает профилировщик кучи V8 при старте и записывает профиль кучи на диск перед завершением работы.
Если --heap-prof-dir не указан, созданный профиль помещается в текущий рабочий каталог.
Если --heap-prof-name не указан, созданный профиль получает имя Heap.${yyyymmdd}.${hhmmss}.${pid}.${tid}.${seq}.heapprofile.
1 2 3 | |
--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 снимков до исчерпания памяти, если max_count больше 0.
Создание снимков V8 требует времени и памяти (как памяти, управляемой кучей V8, так и нативной памяти вне кучи V8). Чем больше куча, тем больше ресурсов требуется. Node.js скорректирует размер кучи V8, чтобы учесть дополнительные накладные расходы памяти V8, и постарается не исчерпать всю память, доступную процессу. Если процесс начнёт использовать больше памяти, чем система считает допустимым, она может аварийно завершить его в зависимости от своей конфигурации.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | |
--heapsnapshot-signal=signal¶
Включает обработчик сигнала, который заставляет процесс Node.js записывать дамп кучи при получении указанного сигнала. signal должен быть корректным именем сигнала. По умолчанию отключено.
1 2 3 4 5 6 7 | |
-h, --help¶
Выводит параметры командной строки node. Вывод этой опции менее подробен, чем этот документ.
--icu-data-dir=file¶
Указывает путь загрузки данных ICU. (Переопределяет NODE_ICU_DATA.)
--import=module¶
Стабильность: 1 - Экспериментальная
Предварительно загружает указанный модуль при запуске. Если флаг передан несколько раз, каждый модуль будет выполнен последовательно в порядке появления, начиная с модулей, указанных в NODE_OPTIONS.
Подчиняется правилам разрешения ECMAScript-модулей. Используйте --require, чтобы загрузить модуль CommonJS. Модули, предварительно загруженные через --require, выполняются раньше модулей, предварительно загруженных через --import.
Модули предварительно загружаются как в основной поток, так и в любые потоки worker, дочерние процессы или процессы кластера.
--input-type=type¶
Этот параметр указывает Node.js интерпретировать ввод из --eval или STDIN как CommonJS либо как ES-модуль. Допустимые значения: "commonjs", "module", "module-typescript" и "commonjs-typescript". Значения с "-typescript" недоступны при использовании флага --no-strip-types. По умолчанию значение не задано, либо используется "commonjs", если передан --no-experimental-detect-module.
Если --input-type не указан, Node.js попытается определить синтаксис следующим образом:
- Запустить ввод как CommonJS.
- Если шаг 1 завершился неудачей, запустить ввод как ES-модуль.
- Если шаг 2 завершился с
SyntaxError, удалить типы. - Если шаг 3 завершился с кодом ошибки
ERR_UNSUPPORTED_TYPESCRIPT_SYNTAXилиERR_INVALID_TYPESCRIPT_SYNTAX, выбросить ошибку из шага 2, включив в сообщение ошибку TypeScript, иначе выполнить как CommonJS. - Если шаг 4 завершился неудачей, выполнить ввод как ES-модуль.
Чтобы избежать задержки из-за нескольких проходов определения синтаксиса, можно использовать флаг --input-type=type, чтобы явно указать, как следует интерпретировать ввод --eval.
REPL не поддерживает этот параметр. Использование --input-type=module совместно с --print приведёт к ошибке, так как --print не поддерживает синтаксис ES-модулей.
--insecure-http-parser¶
Включает флаги более мягкой обработки в HTTP-парсере. Это может обеспечить совместимость с не полностью корректными HTTP-реализациями.
При включении парсер будет принимать следующее:
- недопустимые значения HTTP-заголовков;
- недопустимые версии HTTP;
- сообщения, содержащие одновременно заголовки
Transfer-EncodingиContent-Length; - дополнительные данные после сообщения при наличии
Connection: close; - дополнительные transfer-encoding после уже указанного
chunked; - использование
\nв качестве разделителя токенов вместо\r\n; - отсутствие
\r\nпосле чанка; - наличие пробелов после размера чанка и перед
\r\n.
Всё перечисленное выше делает приложение уязвимым к атакам request smuggling или poisoning. Избегайте использования этого параметра.
--inspect-brk[=[host:]port]¶
Активирует инспектор на host:port и останавливает выполнение в начале пользовательского скрипта. Значение host:port по умолчанию — 127.0.0.1:9229. Если указан порт 0, будет использован случайный доступный порт.
Дополнительные сведения об отладчике Node.js см. в разделе Интеграция V8 Inspector для Node.js.
См. приведённое ниже предупреждение о безопасности относительно использования параметра host.
--inspect-port=[host:]port¶
Задаёт host:port, которые будут использоваться при активации инспектора. Полезно при активации инспектора отправкой сигнала SIGUSR1, кроме случаев, когда передан --disable-sigusr1.
Хост по умолчанию: 127.0.0.1. Если указан порт 0, будет использован случайный доступный порт.
Ознакомьтесь с приведённым ниже предупреждением о безопасности относительно использования параметра host.
--inspect-publish-uid=stderr,http¶
Задаёт способы публикации URL веб-сокета инспектора.
По умолчанию URL веб-сокета инспектора доступен в stderr и по пути /json/list на http://host:port/json/list.
--inspect-wait[=[host:]port]¶
Активирует инспектор на host:port и ожидает подключения отладчика. Значение host:port по умолчанию — 127.0.0.1:9229. Если указан порт 0, будет использован случайный доступный порт.
Дополнительные сведения об отладчике Node.js см. в разделе Интеграция V8 Inspector для Node.js.
См. приведённое ниже предупреждение о безопасности относительно использования параметра host.
--inspect[=[host:]port]¶
Активирует инспектор на host:port. Значение по умолчанию — 127.0.0.1:9229. Если указан порт 0, будет использован случайный доступный порт.
Интеграция V8 Inspector позволяет таким инструментам, как Chrome DevTools и IDE, отлаживать и профилировать экземпляры Node.js. Эти инструменты подключаются к экземплярам Node.js через TCP-порт и взаимодействуют с ними с помощью Chrome DevTools Protocol. Дополнительные сведения об отладчике Node.js см. в разделе Интеграция V8 Inspector для Node.js.
Предупреждение: привязка инспектора к публичной комбинации IP:port небезопасна¶
Привязка инспектора к публичному IP-адресу (включая 0.0.0.0) с открытым портом небезопасна, поскольку позволяет внешним узлам подключаться к инспектору и выполнять атаку удалённого выполнения кода.
Если вы указываете хост, убедитесь, что выполняется одно из условий:
- хост недоступен из публичных сетей;
- брандмауэр запрещает нежелательные подключения к этому порту.
Более конкретно: --inspect=0.0.0.0 небезопасен, если порт (по умолчанию 9229) не защищён брандмауэром.
Дополнительные сведения см. в разделе последствия безопасности отладки.
-i, --interactive¶
Открывает REPL, даже если stdin не выглядит как терминал.
--jitless¶
Стабильность: 1 - Экспериментальная. Этот флаг унаследован от V8 и может измениться в вышестоящем проекте.
Отключает выделение исполняемой памяти во время выполнения. На некоторых платформах это может требоваться по соображениям безопасности. На других платформах это также может уменьшить поверхность атаки, но влияние на производительность может быть существенным.
--localstorage-file=file¶
Стабильность: 1.2 - Кандидат на выпуск.
Файл, используемый для хранения данных localStorage. Если файл не существует, он создаётся при первом обращении к localStorage. Один и тот же файл может одновременно использоваться несколькими процессами Node.js.
--max-http-header-size=size¶
Указывает максимальный размер HTTP-заголовков в байтах. По умолчанию: 16 KiB.
--max-old-space-size-percentage=percentage¶
Устанавливает максимальный размер старой области памяти V8 как процент от доступной системной памяти. Этот флаг имеет приоритет над --max-old-space-size, если указаны оба.
Параметр percentage должен быть числом больше 0 и не больше 100 и задаёт процент доступной системной памяти, выделяемой под кучу V8.
Примечание: Этот флаг использует --max-old-space-size, который может быть ненадёжен на 32-битных платформах из-за переполнения целых чисел.
1 2 3 4 5 | |
--napi-modules¶
Этот параметр ничего не делает. Он сохранён для совместимости.
--network-family-autoselection-attempt-timeout¶
Задаёт значение по умолчанию для тайм-аута попытки автоподбора сетевого семейства. Подробнее см. в net.getDefaultAutoSelectFamilyAttemptTimeout().
--no-addons¶
Отключает условие экспорта node-addons, а также загрузку нативных аддонов. Если указан --no-addons, вызов process.dlopen или подключение нативного C++-аддона завершится ошибкой и выбросит исключение.
--no-async-context-frame¶
Отключает использование AsyncLocalStorage, основанного на AsyncContextFrame, и возвращает прежнюю реализацию, полагавшуюся на async_hooks. Предыдущая модель сохранена для совместимости с Electron и для случаев, когда поток контекста может отличаться. Однако если обнаружится различие в потоке, пожалуйста, сообщите об этом.
--no-deprecation¶
Подавляет предупреждения об устаревании.
--no-experimental-detect-module¶
Отключает использование определения синтаксиса для определения типа модуля.
--no-experimental-global-navigator¶
Стабильность: 1 - Экспериментальная
Отключает публикацию Navigator API в глобальной области видимости.
--no-experimental-repl-await¶
Используйте этот флаг, чтобы отключить top-level await в REPL.
--no-experimental-require-module¶
Стабильность: 3 - Устаревшее: используйте вместо этого
--no-require-module.
Устаревший псевдоним для --no-require-module.
--no-experimental-sqlite¶
Отключает экспериментальный модуль node:sqlite.
--no-experimental-websocket¶
Отключает публикацию WebSocket в глобальной области видимости.
--no-experimental-webstorage¶
Стабильность: 1.2 - Кандидат на выпуск.
Отключает поддержку Web Storage.
--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-require-module¶
Отключает поддержку загрузки синхронного графа ES-модулей через require().
См. Загрузка модулей ECMAScript с помощью require().
--no-strip-types¶
Отключает удаление типов для файлов TypeScript. Подробнее см. в документации по удалению типов TypeScript.
--no-warnings¶
Подавляет все предупреждения процесса, включая предупреждения об устаревании.
--node-memory-debug¶
Включает дополнительные отладочные проверки на утечки памяти во внутренних компонентах Node.js. Обычно это полезно только разработчикам, отлаживающим сам Node.js.
--openssl-config=file¶
Загружает файл конфигурации OpenSSL при запуске. В частности, это можно использовать для включения FIPS-совместимой криптографии, если Node.js собран с OpenSSL с поддержкой FIPS.
--openssl-legacy-provider¶
Включает legacy provider OpenSSL 3.0. Подробнее см. в OSSL_PROVIDER-legacy.
--openssl-shared-config¶
Включает чтение раздела конфигурации OpenSSL по умолчанию openssl_conf из конфигурационного файла OpenSSL. Файл конфигурации по умолчанию называется openssl.cnf, но это можно изменить с помощью переменной окружения OPENSSL_CONF или параметра командной строки --openssl-config. Расположение конфигурационного файла OpenSSL по умолчанию зависит от того, каким образом OpenSSL подключён к Node.js. Совместное использование конфигурации OpenSSL может иметь нежелательные последствия, поэтому рекомендуется использовать специфичный для Node.js раздел nodejs_conf, который и применяется по умолчанию, если этот параметр не используется.
--pending-deprecation¶
Выводит ожидающие предупреждения об устаревании.
Ожидающие предупреждения об устаревании в целом идентичны предупреждениям времени выполнения, за исключением того, что по умолчанию они выключены и не выводятся, если не установлен либо флаг командной строки --pending-deprecation, либо переменная окружения NODE_PENDING_DEPRECATION=1. Они служат своего рода выборочным механизмом "раннего предупреждения", который разработчики могут использовать для обнаружения применения устаревших API.
--permission¶
Включает модель разрешений для текущего процесса. При её включении ограничиваются следующие разрешения:
- файловая система — управляется флагами
--allow-fs-readи--allow-fs-write; - сеть — управляется флагом
--allow-net; - дочерние процессы — управляются флагом
--allow-child-process; - потоки Worker — управляются флагом
--allow-worker; - WASI — управляется флагом
--allow-wasi; - аддоны — управляются флагом
--allow-addons.
--permission-audit¶
Включает режим только аудита для модели разрешений. В этом режиме проверки разрешений выполняются, но доступ не запрещается. Вместо этого при каждом нарушении разрешений через diagnostics channel выдаётся предупреждение.
--preserve-symlinks¶
Указывает загрузчику модулей сохранять символьные ссылки при разрешении и кэшировании модулей.
По умолчанию, когда Node.js загружает модуль по пути, который является символьной ссылкой на другое расположение на диске, Node.js разыменовывает эту ссылку и использует фактический «реальный путь» модуля на диске и как идентификатор, и как корневой путь для поиска других зависимостей модуля. В большинстве случаев такое поведение по умолчанию приемлемо. Однако при использовании peer-зависимостей, подключённых через символьные ссылки, как показано в примере ниже, оно приводит к исключению, если moduleA пытается подключить moduleB как peer-зависимость:
1 2 3 4 5 6 7 8 9 10 11 | |
Флаг командной строки --preserve-symlinks заставляет Node.js использовать для модулей путь символьной ссылки вместо реального пути, что позволяет находить peer-зависимости, подключённые через символьные ссылки.
Однако использование --preserve-symlinks может иметь и другие побочные эффекты. В частности, подключённые через символьные ссылки нативные модули могут не загрузиться, если на них есть ссылки более чем из одного места в дереве зависимостей (Node.js увидит их как два отдельных модуля и попытается загрузить модуль несколько раз, что приведёт к исключению).
Флаг --preserve-symlinks не применяется к главному модулю, благодаря чему команда node --preserve-symlinks node_module/.bin/<foo> работает. Чтобы применить такое же поведение к главному модулю, используйте также --preserve-symlinks-main.
--preserve-symlinks-main¶
Указывает загрузчику модулей сохранять символьные ссылки при разрешении и кэшировании главного модуля (require.main).
Этот флаг существует для того, чтобы главный модуль можно было перевести в тот же режим поведения, который --preserve-symlinks даёт всем остальным импортам; однако это отдельные флаги для обратной совместимости со старыми версиями Node.js.
--preserve-symlinks-main не подразумевает --preserve-symlinks; используйте --preserve-symlinks-main вместе с --preserve-symlinks, если нежелательно разыменовывать символьные ссылки до разрешения относительных путей.
Подробнее см. --preserve-symlinks.
-p, --print "script"¶
То же самое, что и -e, но дополнительно выводит результат.
--prof¶
Создаёт вывод профилировщика V8.
--prof-process¶
Обрабатывает вывод профилировщика V8, созданный с помощью параметра V8 --prof.
--redirect-warnings=file¶
Записывает предупреждения процесса в указанный файл вместо вывода в stderr. Если файла не существует, он будет создан; если существует, запись будет выполнена в конец файла. Если при попытке записать предупреждение в файл произойдёт ошибка, предупреждение будет записано в stderr.
Имя file может быть абсолютным путём. Если это не так, каталог по умолчанию, в который будет выполнена запись, задаётся параметром командной строки --diagnostic-dir.
--report-compact¶
Записывает отчёты в компактном формате, как однострочный JSON, который проще обрабатывать системам обработки логов, чем формат по умолчанию из нескольких строк, рассчитанный на чтение человеком.
--report-dir=directory, --report-directory=directory¶
Каталог, в котором будет создан отчёт.
--report-exclude-env¶
Если передан --report-exclude-env, сгенерированный диагностический отчёт не будет содержать данные environmentVariables.
--report-exclude-network¶
Исключает header.networkInterfaces из диагностического отчёта. По умолчанию этот параметр не задан, и сетевые интерфейсы включаются.
--report-filename=filename¶
Имя файла, в который будет записан отчёт.
Если имя файла задано как 'stdout' или 'stderr', отчёт записывается соответственно в stdout или stderr процесса.
--report-on-fatalerror¶
Включает генерацию отчёта при фатальных ошибках (внутренних ошибках среды выполнения Node.js, например нехватке памяти), приводящих к завершению приложения. Полезно для просмотра различных диагностических данных: кучи, стека, состояния цикла событий, потребления ресурсов и т. д., чтобы понять причину фатальной ошибки.
--report-on-signal¶
Включает генерацию отчёта при получении указанного (или предопределённого) сигнала запущенным процессом Node.js. Сигнал для запуска отчёта задаётся через --report-signal.
--report-signal=signal¶
Устанавливает или сбрасывает сигнал для генерации отчёта (не поддерживается в Windows). Сигнал по умолчанию: SIGUSR2.
--report-uncaught-exception¶
Включает генерацию отчёта при завершении процесса из-за неперехваченного исключения. Полезно при анализе стека JavaScript вместе с нативным стеком и другими данными среды выполнения.
-r, --require module¶
Предзагружает указанный модуль при запуске.
Следует правилам разрешения модулей require(). module может быть либо путём к файлу, либо именем модуля Node.js.
Модули, предзагруженные с помощью --require, выполняются раньше модулей, предзагруженных с помощью --import.
Модули предзагружаются в основной поток, а также в любые потоки worker, порождённые процессы или процессы кластера.
--run¶
Запускает указанную команду из объекта "scripts" в package.json. Если передана отсутствующая "command", будет показан список доступных скриптов.
--run поднимается вверх до корневого каталога и находит файл package.json, из которого нужно запустить команду.
--run добавляет ./node_modules/.bin для каждого родительского каталога текущего каталога в PATH, чтобы можно было выполнять бинарные файлы из разных папок, когда присутствует несколько каталогов node_modules, если ancestor-folder/node_modules/.bin является каталогом.
--run выполняет команду в каталоге, содержащем соответствующий package.json.
Например, следующая команда запустит скрипт test из package.json в текущей папке:
1 | |
Команде также можно передавать аргументы. Любой аргумент после -- будет добавлен к скрипту:
1 | |
Намеренные ограничения¶
node --run не предназначен для полного повторения поведения npm run или команд run других менеджеров пакетов. Реализация в Node.js намеренно более ограничена, чтобы сосредоточиться на максимальной производительности для самых частых сценариев использования. Некоторые возможности других реализаций run, которые намеренно исключены:
- Запуск
pre- илиpost-скриптов помимо указанного скрипта. - Определение переменных окружения, специфичных для менеджера пакетов.
Переменные окружения¶
При запуске скрипта с --run устанавливаются следующие переменные окружения:
NODE_RUN_SCRIPT_NAME: имя запускаемого скрипта. Например, если--runиспользуется для запускаtest, значением этой переменной будетtest.NODE_RUN_PACKAGE_JSON_PATH: путь к обрабатываемомуpackage.json.
--secure-heap-min=n¶
При использовании --secure-heap флаг --secure-heap-min задаёт минимальный размер выделения из защищённой кучи. Минимальное значение: 2. Максимальное значение равно меньшему из --secure-heap и 2147483647. Указанное значение должно быть степенью двойки.
--secure-heap=n¶
Инициализирует защищённую кучу OpenSSL размером n байт. После инициализации она используется для некоторых типов выделения памяти внутри OpenSSL во время генерации ключей и других операций. Это, например, полезно для предотвращения утечки чувствительной информации из-за выхода указателей за границы буфера.
Защищённая куча имеет фиксированный размер и не может быть изменена во время выполнения, поэтому при её использовании важно выбрать достаточно большой размер, чтобы покрыть все потребности приложения.
Указанный размер кучи должен быть степенью двойки. Любое значение меньше 2 отключит защищённую кучу.
По умолчанию защищённая куча отключена.
Защищённая куча недоступна в Windows.
Подробнее см. CRYPTO_secure_malloc_init.
--snapshot-blob=path¶
Стабильность: 1 - Экспериментальная
Вместе с --build-snapshot параметр --snapshot-blob задаёт путь, по которому записывается сгенерированный blob снимка. Если не указан, сгенерированный blob записывается в snapshot.blob в текущем рабочем каталоге.
Без --build-snapshot параметр --snapshot-blob задаёт путь к blob, используемому для восстановления состояния приложения.
При загрузке снимка Node.js проверяет, что:
- Версия, архитектура и платформа запущенного бинарника Node.js в точности совпадают с теми, что у бинарника, сгенерировавшего снимок.
- Флаги V8 и возможности CPU совместимы с бинарником, сгенерировавшим снимок.
Если условия не выполняются, Node.js отказывается загружать снимок и завершается с кодом состояния 1.
--test¶
Запускает средство запуска тестов из командной строки Node.js. Этот флаг нельзя сочетать с --watch-path, --check, --eval, --interactive или инспектором. Подробнее см. документацию по запуску тестов из командной строки.
--test-concurrency¶
Максимальное количество файлов тестов, которое CLI средства запуска тестов будет выполнять одновременно. Если --test-isolation установлен в 'none', этот флаг игнорируется, и параллелизм равен единице. В противном случае по умолчанию используется os.availableParallelism() - 1.
--test-coverage-branches=threshold¶
Стабильность: 1 - Экспериментальная
Требует минимальный процент покрытия ветвей. Если покрытие кода не достигает указанного порога, процесс завершится с кодом 1.
--test-coverage-exclude¶
Стабильность: 1 - Экспериментальная
Исключает определённые файлы из покрытия кода с помощью glob-шаблона, который может соответствовать как абсолютным, так и относительным путям файлов.
Этот параметр можно указывать несколько раз, чтобы исключить несколько glob-шаблонов.
Если указаны и --test-coverage-exclude, и --test-coverage-include, файлы должны соответствовать обоим критериям, чтобы попасть в отчёт о покрытии.
По умолчанию все подходящие файлы тестов исключаются из отчёта о покрытии. Указание этого параметра переопределяет поведение по умолчанию.
--test-coverage-functions=threshold¶
Стабильность: 1 - Экспериментальная
Требует минимальный процент покрытия функций. Если покрытие кода не достигает указанного порога, процесс завершится с кодом 1.
--test-coverage-include¶
Стабильность: 1 - Экспериментальная
Включает определённые файлы в покрытие кода с помощью glob-шаблона, который может соответствовать как абсолютным, так и относительным путям файлов.
Этот параметр можно указывать несколько раз, чтобы включить несколько glob-шаблонов.
Если указаны и --test-coverage-exclude, и --test-coverage-include, файлы должны соответствовать обоим критериям, чтобы попасть в отчёт о покрытии.
--test-coverage-lines=threshold¶
Стабильность: 1 - Экспериментальная
Требует минимальный процент покрытия строк. Если покрытие кода не достигает указанного порога, процесс завершится с кодом 1.
--test-force-exit¶
Настраивает средство запуска тестов так, чтобы процесс завершался после выполнения всех известных тестов, даже если цикл обработки событий в противном случае оставался бы активным.
--test-global-setup=module¶
Стабильность: 1.0 - Ранняя разработка
Указывает модуль, который будет вычислен до выполнения всех тестов и может использоваться для настройки глобального состояния или фикстур для тестов.
Подробнее см. документацию по глобальной настройке и завершению.
--test-isolation=mode¶
Настраивает тип изоляции тестов, используемый средством запуска тестов. Когда mode имеет значение 'process', каждый файл теста запускается в отдельном дочернем процессе. Когда mode имеет значение 'none', все файлы тестов запускаются в том же процессе, что и средство запуска тестов. Режим изоляции по умолчанию - 'process'. Этот флаг игнорируется, если флаг --test отсутствует. Подробнее см. раздел модель выполнения средства запуска тестов.
--test-name-pattern¶
Регулярное выражение, настраивающее средство запуска тестов так, чтобы выполнялись только тесты, имя которых соответствует указанному шаблону. Подробнее см. в документации по фильтрации тестов по имени.
Если указаны оба параметра --test-name-pattern и --test-skip-pattern, тесты должны удовлетворять обоим условиям, чтобы быть выполненными.
--test-only¶
Настраивает средство запуска тестов так, чтобы выполнялись только тесты верхнего уровня, у которых установлен параметр only. Этот флаг не нужен, когда изоляция тестов отключена.
--test-random-seed¶
Задаёт зерно, используемое для случайного порядка выполнения тестов. Это применяется как к порядку выполнения файлов тестов, так и к очередям тестов внутри каждого файла. Передача этого флага неявно включает рандомизацию даже без --test-randomize.
Значение должно быть целым числом от 0 до 4294967295.
Этот флаг нельзя использовать вместе с --watch или --test-rerun-failures.
--test-randomize¶
Случайным образом меняет порядок выполнения тестов. Это применяется как к порядку выполнения файлов тестов, так и к очередям тестов внутри каждого файла. Это может помочь обнаружить тесты, зависящие от общего состояния или порядка выполнения.
Зерно, использованное для рандомизации, выводится в сводке тестов и может быть повторно использовано с --test-random-seed.
Подробное описание поведения и примеры см. в разделе рандомизация порядка выполнения тестов.
Этот флаг нельзя использовать вместе с --watch или --test-rerun-failures.
--test-reporter¶
Репортёр тестов, используемый при запуске тестов. Подробнее см. в документации по репортёрам тестов.
--test-reporter-destination¶
Назначение для соответствующего репортера тестов. Подробнее см. в документации по репортерам тестов.
--test-rerun-failures¶
Путь к файлу, позволяющему средству запуска тестов сохранять состояние набора тестов между запусками. Средство запуска будет использовать этот файл, чтобы определить, какие тесты уже завершились успешно или неудачно, что позволяет повторно запускать только провалившиеся тесты без повторного запуска всего набора тестов. Если файла не существует, средство запуска тестов создаст его. Подробнее см. в документации по повторным запускам тестов.
--test-shard¶
Часть набора тестов для выполнения в формате <index>/<total>, где
index- положительное целое число, индекс части.total- положительное целое число, общее количество частей.
Эта команда разделит все файлы тестов на total равных частей и запустит только те, которые попали в часть index.
Например, чтобы разделить набор тестов на три части, используйте:
1 2 3 | |
--test-skip-pattern¶
Регулярное выражение, настраивающее средство запуска тестов так, чтобы пропускать тесты, имя которых соответствует указанному шаблону. Подробнее см. в документации по фильтрации тестов по имени.
Если указаны оба параметра --test-name-pattern и --test-skip-pattern, тесты должны удовлетворять обоим условиям, чтобы быть выполненными.
--test-timeout¶
Количество миллисекунд, по истечении которого выполнение теста завершается ошибкой. Если значение не указано, подтесты наследуют его от родительского теста. Значение по умолчанию: Infinity.
--test-update-snapshots¶
Повторно создаёт файлы снимков, используемые средством запуска тестов для тестирования снимков.
--throw-deprecation¶
Вызывает ошибки для устаревших возможностей.
--title=title¶
Устанавливает process.title при запуске.
--tls-cipher-list=list¶
Указывает альтернативный список шифров TLS по умолчанию. Требует, чтобы Node.js был собран с поддержкой crypto (по умолчанию так и есть).
--tls-keylog=file¶
Записывает ключевой материал TLS в файл. Ключевой материал имеет формат NSS SSLKEYLOGFILE и может использоваться программами (например, Wireshark) для расшифровки TLS-трафика.
--tls-max-v1.2¶
Устанавливает tls.DEFAULT_MAX_VERSION в 'TLSv1.2'. Используется для отключения поддержки TLSv1.3.
--tls-max-v1.3¶
Устанавливает значение tls.DEFAULT_MAX_VERSION по умолчанию в 'TLSv1.3'. Используется для включения поддержки TLSv1.3.
--tls-min-v1.0¶
Устанавливает значение tls.DEFAULT_MIN_VERSION по умолчанию в 'TLSv1'. Используется для совместимости со старыми TLS-клиентами или серверами.
--tls-min-v1.1¶
Устанавливает значение tls.DEFAULT_MIN_VERSION по умолчанию в 'TLSv1.1'. Используется для совместимости со старыми TLS-клиентами или серверами.
--tls-min-v1.2¶
Устанавливает значение tls.DEFAULT_MIN_VERSION по умолчанию в 'TLSv1.2'. Это значение используется по умолчанию в 12.x и новее, но сам параметр поддерживается для совместимости со старыми версиями Node.js.
--tls-min-v1.3¶
Устанавливает значение tls.DEFAULT_MIN_VERSION по умолчанию в 'TLSv1.3'. Используется для отключения поддержки TLSv1.2, которая менее безопасна, чем TLSv1.3.
--trace-deprecation¶
Выводит трассировки стека для предупреждений об устаревании.
--trace-env¶
Выводит в stderr сведения о любом доступе к переменным окружения, выполненном в текущем экземпляре Node.js, включая:
- чтения переменных окружения, которые Node.js выполняет внутри себя;
- записи вида
process.env.KEY = "SOME VALUE"; - чтения вида
process.env.KEY; - определения вида
Object.defineProperty(process.env, 'KEY', {...}); - проверки вида
Object.hasOwn(process.env, 'KEY'),process.env.hasOwnProperty('KEY')или'KEY' in process.env. - Удаления вида
delete process.env.KEY. - Переборы вида
...process.envилиObject.keys(process.env).
Выводятся только имена переменных окружения, к которым производится доступ. Их значения не выводятся.
Чтобы вывести трассировку стека для такого доступа, используйте --trace-env-js-stack и/или --trace-env-native-stack.
--trace-env-js-stack¶
Помимо того, что делает --trace-env, этот параметр выводит JavaScript- трассировку стека для такого доступа.
--trace-env-native-stack¶
Помимо того, что делает --trace-env, этот параметр выводит нативную трассировку стека для такого доступа.
--trace-event-categories¶
Список категорий, разделённых запятыми, которые следует трассировать, когда трассировка событий включена с помощью --trace-events-enabled.
--trace-event-file-pattern¶
Строка шаблона, задающая путь к файлу для данных trace event; поддерживает ${rotation} и ${pid}.
--trace-events-enabled¶
Включает сбор информации трассировки trace event.
--trace-exit¶
Выводит трассировку стека каждый раз, когда выполнение окружения завершается принудительно, то есть при вызове process.exit().
--trace-require-module=mode¶
Выводит информацию об использовании загрузки модулей ECMAScript с помощью require().
Когда mode имеет значение all, выводятся все случаи использования. Когда mode имеет значение no-node-modules, случаи использования из папки node_modules исключаются.
--trace-sigint¶
Выводит трассировку стека при SIGINT.
--trace-sync-io¶
Выводит трассировку стека всякий раз, когда синхронный ввод-вывод обнаруживается после первого цикла обработки событий.
--trace-tls¶
Выводит информацию трассировки TLS-пакетов в stderr. Это можно использовать для отладки проблем TLS-соединений.
--trace-uncaught¶
Выводит трассировки стека для неперехваченных исключений; обычно выводится трассировка, связанная с созданием Error, а этот параметр заставляет Node.js также выводить трассировку, связанную с выбрасыванием значения (которое не обязано быть экземпляром Error).
Включение этого параметра может негативно повлиять на поведение сборщика мусора.
--trace-warnings¶
Выводит трассировки стека для предупреждений процесса (включая предупреждения об устаревании).
--track-heap-objects¶
Отслеживает выделение объектов кучи для снимков кучи.
--unhandled-rejections=mode¶
Использование этого флага позволяет изменить поведение при возникновении необработанного отклонения промиса. Можно выбрать один из следующих режимов:
throw: генерируетunhandledRejection. Если этот хук не установлен, необработанное отклонение выбрасывается как неперехваченное исключение. Это значение по умолчанию.strict: выбрасывает необработанное отклонение как неперехваченное исключение. Если исключение обработано, генерируетсяunhandledRejection.warn: всегда выдаёт предупреждение независимо от того, установлен ли хукunhandledRejection, но не выводит предупреждение об устаревании.warn-with-error-code: генерируетunhandledRejection. Если этот хук не установлен, выдаёт предупреждение и устанавливает код завершения процесса в 1.none: подавляет все предупреждения.
Если отклонение происходит на этапе статической загрузки ES-модуля в точке входа командной строки, оно всегда выбрасывается как неперехваченное исключение.
--use-bundled-ca, --use-openssl-ca¶
Использует встроенное хранилище CA Mozilla, поставляемое текущей версией Node.js, либо хранилище CA OpenSSL по умолчанию. Хранилище по умолчанию выбирается на этапе сборки.
Встроенное хранилище CA, поставляемое с Node.js, представляет собой снимок хранилища CA Mozilla, зафиксированный на момент выпуска. Оно одинаково на всех поддерживаемых платформах.
Использование хранилища OpenSSL допускает внешние изменения этого хранилища. В большинстве дистрибутивов Linux и BSD это хранилище поддерживается сопровождающими дистрибутива и системными администраторами. Расположение хранилища CA OpenSSL зависит от конфигурации библиотеки OpenSSL, но его можно изменить во время выполнения с помощью переменных окружения.
См. SSL_CERT_DIR и SSL_CERT_FILE.
--use-env-proxy¶
Стабильность: 1.1 - Активная разработка
При включении Node.js во время запуска разбирает переменные окружения HTTP_PROXY, HTTPS_PROXY и NO_PROXY и направляет запросы через указанный прокси.
Это эквивалентно установке переменной окружения NODE_USE_ENV_PROXY=1. Если заданы оба варианта, приоритет имеет --use-env-proxy.
--use-largepages=mode¶
Переназначает статический код Node.js на большие страницы памяти при запуске. Если целевая система это поддерживает, статический код Node.js будет перенесён на страницы размером 2 MiB вместо 4 KiB.
Для mode допустимы следующие значения:
off: попытка отображения не выполняется. Это значение по умолчанию.on: если ОС поддерживает, будет выполнена попытка отображения. Неудача будет проигнорирована, а сообщение выведено в стандартный поток ошибок.silent: если ОС поддерживает, будет выполнена попытка отображения. Неудача будет проигнорирована и не будет сообщена.
--use-system-ca¶
Node.js использует доверенные сертификаты CA, присутствующие в системном хранилище, вместе с параметром --use-bundled-ca и переменной окружения NODE_EXTRA_CA_CERTS. На платформах, отличных от Windows и macOS, это загружает сертификаты из каталога и файла, которым доверяет OpenSSL, аналогично --use-openssl-ca, но с тем отличием, что сертификаты кэшируются после первой загрузки.
В Windows и macOS политика доверия к сертификатам похожа на политику Chromium для локально доверенных сертификатов, но с некоторыми отличиями:
В macOS учитываются следующие настройки:
- Связки ключей
DefaultиSystem- Доверие:
- Любой сертификат, у которого параметр "When using this certificate" ("При использовании этого сертификата") установлен в "Always Trust" ("Всегда доверять"), или
- Любой сертификат, у которого параметр "Secure Sockets Layer (SSL)" ("Secure Sockets Layer (SSL)") установлен в "Always Trust" ("Всегда доверять").
- Сертификат также должен быть действительным, а параметр "X.509 Basic Policy" ("Базовая политика X.509") должен быть установлен в "Always Trust" ("Всегда доверять").
- Доверие:
В Windows учитываются следующие настройки:
Local Machine(доступ черезcertlm.msc)- Доверие:
Trusted Root Certification AuthoritiesTrusted PeopleEnterprise Trust -> Enterprise -> Trusted Root Certification AuthoritiesEnterprise Trust -> Enterprise -> Trusted PeopleEnterprise Trust -> Group Policy -> Trusted Root Certification AuthoritiesEnterprise Trust -> Group Policy -> Trusted People
- Доверие:
Current User(доступ черезcertmgr.msc)- Доверие:
Trusted Root Certification AuthoritiesEnterprise Trust -> Group Policy -> Trusted Root Certification Authorities
- Доверие:
В Windows и macOS перед использованием доверенных сертификатов для аутентификации TLS-сервера Node.js проверяет, не запрещают ли это пользовательские настройки для этих сертификатов.
В настоящее время Node.js не поддерживает недоверие/отзыв сертификатов из другого источника на основе системных настроек.
На других системах Node.js загружает сертификаты из файла сертификатов по умолчанию (обычно /etc/ssl/cert.pem) и каталога сертификатов по умолчанию (обычно /etc/ssl/certs), которые использует версия OpenSSL, с которой связан Node.js. Обычно это соответствует принятому соглашению в основных дистрибутивах Linux и других Unix-подобных системах. Если заданы переопределяющие переменные окружения OpenSSL (обычно SSL_CERT_FILE и SSL_CERT_DIR, в зависимости от конфигурации OpenSSL, с которой связан Node.js), для загрузки сертификатов будут использованы указанные пути. Эти переменные окружения можно использовать как обходной путь, если обычные пути, используемые версией OpenSSL, с которой связан Node.js, по какой-либо причине не совпадают с системной конфигурацией пользователей.
--v8-options¶
Выводит параметры командной строки V8.
--v8-pool-size=num¶
Задаёт размер пула потоков V8, который будет использоваться для распределения фоновых задач.
Если указать 0, Node.js сам выберет подходящий размер пула потоков на основе оценки степени параллелизма.
Степень параллелизма означает количество вычислений, которые можно выполнять одновременно на данной машине. Обычно это соответствует числу CPU, но может отличаться в средах вроде виртуальных машин или контейнеров.
-v, --version¶
Выводит версию Node.js.
--watch¶
Запускает Node.js в режиме наблюдения. В этом режиме изменения в отслеживаемых файлах приводят к перезапуску процесса Node.js. По умолчанию режим наблюдения отслеживает точку входа и любые требуемые или импортированные модули. Используйте --watch-path, чтобы указать, какие пути нужно отслеживать.
Этот флаг нельзя сочетать с --check, --eval, --interactive или REPL.
Примечание: флаг --watch требует путь к файлу в качестве аргумента и несовместим с --run или встроенным вводом скрипта, так как --run имеет приоритет и игнорирует режим наблюдения. Если файл не указан, Node.js завершится с кодом состояния 9.
1 | |
--watch-kill-signal¶
Стабильность: 1.1 - Активная разработка
Настраивает сигнал, отправляемый процессу при перезапусках в режиме наблюдения.
1 | |
--watch-path¶
Запускает Node.js в режиме наблюдения и задаёт пути, которые нужно отслеживать. В режиме наблюдения изменения в этих путях приводят к перезапуску процесса Node.js. Это отключает отслеживание требуемых или импортированных модулей, даже если параметр используется совместно с --watch.
Этот флаг нельзя сочетать с --check, --eval, --interactive, --test или REPL.
Примечание: использование --watch-path неявно включает --watch, который требует путь к файлу и несовместим с --run, так как --run имеет приоритет и игнорирует режим наблюдения.
1 | |
Этот параметр поддерживается только в macOS и Windows. Если использовать его на платформе, которая его не поддерживает, будет выброшено исключение ERR_FEATURE_UNAVAILABLE_ON_PLATFORM.
--watch-preserve-output¶
Отключает очистку консоли при перезапуске процесса в режиме наблюдения.
1 | |
--zero-fill-buffers¶
Автоматически заполняет нулями все вновь выделенные экземпляры Buffer.
Переменные окружения¶
Стабильность: 2 - Стабильная
FORCE_COLOR=[1, 2, 3]¶
Переменная окружения FORCE_COLOR используется для включения ANSI-цветного вывода. Возможные значения:
1,trueили пустая строка''означают поддержку 16 цветов,2означает поддержку 256 цветов,3означает поддержку 16 миллионов цветов.
Если FORCE_COLOR используется и имеет поддерживаемое значение, переменные окружения NO_COLOR и NODE_DISABLE_COLORS игнорируются.
Любое другое значение приведёт к отключению цветного вывода.
NODE_COMPILE_CACHE=dir¶
Включает кэш компиляции модулей для экземпляра Node.js. Подробнее см. документацию по кэшу компиляции модулей.
NODE_COMPILE_CACHE_PORTABLE=1¶
Если установлено значение 1, кэш компиляции модулей можно повторно использовать в разных расположениях каталогов, пока структура модулей относительно каталога кэша остаётся одинаковой.
NODE_DEBUG=module[,…]¶
Список основных модулей, разделённых ',', для которых следует выводить отладочную информацию.
NODE_DEBUG_NATIVE=module[,…]¶
Список основных C++-модулей, разделённых ',', для которых следует выводить отладочную информацию.
NODE_DISABLE_COLORS=1¶
Если установлено, в REPL не будут использоваться цвета.
NODE_DISABLE_COMPILE_CACHE=1¶
Стабильность: 1.1 - Активная разработка
Отключает кэш компиляции модулей для экземпляра Node.js. Подробнее см. документацию по кэшу компиляции модулей.
NODE_EXTRA_CA_CERTS=file¶
Если установлено, общеизвестные "корневые" CA (например, 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 или файл скрипта.
Если значение параметра содержит пробел, его можно экранировать двойными кавычками:
1 | |
Одиночный флаг, переданный в командной строке, переопределяет тот же флаг, переданный через NODE_OPTIONS:
1 2 | |
Флаг, который можно передавать несколько раз, обрабатывается так, как если бы сначала были переданы его экземпляры из NODE_OPTIONS, а затем экземпляры из командной строки:
1 2 3 | |
Разрешённые параметры Node.js приведены в следующем списке. Если параметр поддерживает варианты и --XX, и --no-XX, поддерживаются оба, но в список ниже включён только один из них.
--allow-addons--allow-child-process--allow-fs-read--allow-fs-write--allow-inspector--allow-net--allow-wasi--allow-worker--conditions,-C--cpu-prof-dir--cpu-prof-interval--cpu-prof-name--cpu-prof--diagnostic-dir--disable-proto--disable-sigusr1--disable-warning--disable-wasm-trap-handler--dns-result-order--enable-fips--enable-network-family-autoselection--enable-source-maps--entry-url--experimental-abortcontroller--experimental-addon-modules--experimental-detect-module--experimental-eventsource--experimental-import-meta-resolve--experimental-json-modules--experimental-loader--experimental-modules--experimental-print-required-tla--experimental-quic--experimental-require-module--experimental-shadow-realm--experimental-specifier-resolution--experimental-stream-iter--experimental-test-isolation--experimental-top-level-await--experimental-vm-modules--experimental-wasi-unstable-preview1--force-context-aware--force-fips--force-node-api-uncaught-exceptions-policy--frozen-intrinsics--heap-prof-dir--heap-prof-interval--heap-prof-name--heap-prof--heapsnapshot-near-heap-limit--heapsnapshot-signal--http-parser--icu-data-dir--import--input-type--insecure-http-parser--inspect-brk--inspect-port,--debug-port--inspect-publish-uid--inspect-wait--inspect--localstorage-file--max-http-header-size--max-old-space-size-percentage--napi-modules--network-family-autoselection-attempt-timeout--no-addons--no-async-context-frame--no-deprecation--no-experimental-global-navigator--no-experimental-repl-await--no-experimental-sqlite--no-experimental-strip-types--no-experimental-websocket--no-experimental-webstorage--no-extra-info-on-fatal-exception--no-force-async-hooks-checks--no-global-search-paths--no-network-family-autoselection--no-strip-types--no-warnings--no-webstorage--node-memory-debug--openssl-config--openssl-legacy-provider--openssl-shared-config--pending-deprecation--permission-audit--permission--preserve-symlinks-main--preserve-symlinks--prof-process--redirect-warnings--report-compact--report-dir,--report-directory--report-exclude-env--report-exclude-network--report-filename--report-on-fatalerror--report-on-signal--report-signal--report-uncaught-exception--require-module--require,-r--secure-heap-min--secure-heap--snapshot-blob--test-coverage-branches--test-coverage-exclude--test-coverage-functions--test-coverage-include--test-coverage-lines--test-global-setup--test-isolation--test-name-pattern--test-only--test-random-seed--test-randomize--test-reporter-destination--test-reporter--test-rerun-failures--test-shard--test-skip-pattern--throw-deprecation--title--tls-cipher-list--tls-keylog--tls-max-v1.2--tls-max-v1.3--tls-min-v1.0--tls-min-v1.1--tls-min-v1.2--tls-min-v1.3--trace-deprecation--trace-env-js-stack--trace-env-native-stack--trace-env--trace-event-categories--trace-event-file-pattern--trace-events-enabled--trace-exit--trace-require-module--trace-sigint--trace-sync-io--trace-tls--trace-uncaught--trace-warnings--track-heap-objects--unhandled-rejections--use-bundled-ca--use-env-proxy--use-largepages--use-openssl-ca--use-system-ca--v8-pool-size--watch-kill-signal--watch-path--watch-preserve-output--watch--zero-fill-buffers
Допустимы следующие параметры V8:
--abort-on-uncaught-exception--disallow-code-generation-from-strings--enable-etw-stack-walking--expose-gc--interpreted-frames-native-stack--jitless--max-heap-size--max-old-space-size--max-semi-space-size--perf-basic-prof-only-functions--perf-basic-prof--perf-prof-unwinding-info--perf-prof--stack-trace-limit
--perf-basic-prof-only-functions, --perf-basic-prof, --perf-prof-unwinding-info и --perf-prof доступны только в Linux.
--enable-etw-stack-walking доступен только в Windows.
NODE_PATH=path[:…]¶
Список каталогов, разделённых ':', который добавляется в начало пути поиска модулей.
В Windows вместо этого используется список, разделённый ';'.
NODE_PENDING_DEPRECATION=1¶
Если установлено значение 1, выводит ожидающие предупреждения об устаревании.
Ожидающие предупреждения об устаревании в целом идентичны предупреждениям времени выполнения, за исключением того, что по умолчанию они выключены и не выводятся, если не установлен либо флаг командной строки --pending-deprecation, либо переменная окружения NODE_PENDING_DEPRECATION=1. Они служат своего рода выборочным механизмом "раннего предупреждения", который разработчики могут использовать для обнаружения применения устаревших API.
NODE_PENDING_PIPE_INSTANCES=instances¶
Задаёт количество ожидающих дескрипторов экземпляров канала, когда сервер каналов ожидает подключения. Этот параметр применяется только в Windows.
NODE_PRESERVE_SYMLINKS=1¶
Если установлено значение 1, загрузчику модулей предписывается сохранять символьные ссылки при разрешении и кэшировании модулей.
NODE_REDIRECT_WARNINGS=file¶
Если задано, предупреждения процесса будут выводиться в указанный файл вместо печати в stderr. Если файл не существует, он будет создан; если существует, запись будет выполняться в конец файла. Если при попытке записать предупреждение в файл произойдёт ошибка, предупреждение будет выведено в stderr. Это эквивалентно использованию параметра командной строки --redirect-warnings=file.
NODE_REPL_EXTERNAL_MODULE=file¶
Путь к модулю Node.js, который будет загружен вместо встроенного REPL. Если задать для этого значения пустую строку (''), будет использоваться встроенный REPL.
NODE_REPL_HISTORY=file¶
Путь к файлу, используемому для хранения постоянной истории REPL. Путь по умолчанию - ~/.node_repl_history; эта переменная его переопределяет. Установка пустого значения ('' или ' ') отключает постоянную историю REPL.
NODE_SKIP_PLATFORM_CHECK=value¶
Если value равно '1', во время запуска Node.js пропускается проверка поддерживаемой платформы. Node.js может работать некорректно. Любые проблемы, возникающие на неподдерживаемых платформах, исправляться не будут.
NODE_TEST_CONTEXT=value¶
Если value равно 'child', параметры репортера тестов будут переопределены, а вывод тестов будет отправлен в stdout в формате TAP. Если задано любое другое значение, Node.js не даёт гарантий относительно используемого формата репортера и его стабильности.
NODE_TLS_REJECT_UNAUTHORIZED=value¶
Если value равно '0', проверка сертификатов для TLS-соединений отключается. Это делает TLS, а следовательно и HTTPS, небезопасными. Использование этой переменной окружения настоятельно не рекомендуется.
NODE_USE_ENV_PROXY=1¶
Стабильность: 1.1 - Активная разработка
При включении Node.js во время запуска разбирает переменные окружения HTTP_PROXY, HTTPS_PROXY и NO_PROXY и направляет запросы через указанный прокси.
Это также можно включить с помощью параметра командной строки --use-env-proxy. Если заданы оба варианта, приоритет имеет --use-env-proxy.
NODE_USE_SYSTEM_CA=1¶
Node.js использует доверенные сертификаты CA, присутствующие в системном хранилище, вместе с параметром --use-bundled-ca и переменной окружения NODE_EXTRA_CA_CERTS.
Это также можно включить с помощью параметра командной строки --use-system-ca. Если заданы оба варианта, приоритет имеет --use-system-ca.
NODE_V8_COVERAGE=dir¶
Если задано это значение, Node.js начнёт выводить данные покрытия JavaScript-кода V8 и Source Map в каталог, переданный в качестве аргумента (информация о покрытии записывается в JSON-файлы с префиксом coverage).
NODE_V8_COVERAGE автоматически распространяется на подпроцессы, что упрощает инструментирование приложений, вызывающих семейство функций child_process.spawn(). Чтобы предотвратить распространение, NODE_V8_COVERAGE можно установить в пустую строку.
Вывод покрытия¶
Покрытие выводится как массив объектов ScriptCoverage в ключе верхнего уровня result:
1 2 3 4 5 6 7 8 9 | |
Кэш source map¶
Стабильность: 1 - Экспериментальная
Если данные source map найдены, они добавляются в ключ верхнего уровня source-map-cache объекта JSON покрытия.
source-map-cache - это объект, где ключи представляют файлы, из которых были извлечены source map, а значения включают необработанный URL source map (в ключе url), разобранную информацию Source Map v3 (в ключе data) и длины строк исходного файла (в ключе lineLengths).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | |
NO_COLOR=<any>¶
NO_COLOR - это псевдоним для NODE_DISABLE_COLORS. Значение переменной окружения может быть любым.
OPENSSL_CONF=file¶
Загружает конфигурационный файл OpenSSL при запуске. Помимо прочего, это можно использовать для включения FIPS-совместимой криптографии, если Node.js собран с ./configure --openssl-fips.
Если используется параметр командной строки --openssl-config, переменная окружения игнорируется.
SSL_CERT_DIR=dir¶
Если включено --use-openssl-ca, либо если --use-system-ca включено на платформах, отличных от macOS и Windows, эта переменная переопределяет и задаёт каталог OpenSSL, содержащий доверенные сертификаты.
Имейте в виду, что если дочернее окружение не задано явно, эта переменная окружения будет унаследована всеми дочерними процессами, и если они используют OpenSSL, это может привести к тому, что они будут доверять тем же CA, что и Node.js.
SSL_CERT_FILE=file¶
Если включено --use-openssl-ca, либо если --use-system-ca включено на платформах, отличных от macOS и Windows, эта переменная переопределяет и задаёт файл OpenSSL, содержащий доверенные сертификаты.
Имейте в виду, что если дочернее окружение не задано явно, эта переменная окружения будет унаследована всеми дочерними процессами, и если они используют OpenSSL, это может привести к тому, что они будут доверять тем же CA, что и Node.js.
TZ¶
Переменная окружения TZ используется для указания конфигурации часового пояса.
Хотя Node.js не поддерживает все различные способы обработки TZ в других окружениях, он поддерживает базовые идентификаторы часовых поясов (такие как 'Etc/UTC', 'Europe/Paris' или 'America/New_York'). Он может поддерживать и некоторые другие сокращения или псевдонимы, но их использование настоятельно не рекомендуется и не гарантируется.
1 2 | |
UV_THREADPOOL_SIZE=size¶
Задаёт количество потоков, используемых в пуле потоков libuv, равным size.
Node.js по возможности использует асинхронные системные API, но там, где их нет, пул потоков libuv применяется для создания асинхронных API Node.js на основе синхронных системных API. Пул потоков используют следующие API Node.js:
- все API
fs, кроме API наблюдения за файлами и тех, которые явно являются синхронными - асинхронные криптографические API, такие как
crypto.pbkdf2(),crypto.scrypt(),crypto.randomBytes(),crypto.randomFill(),crypto.generateKeyPair() dns.lookup()- все API
zlib, кроме тех, которые явно являются синхронными
Поскольку пул потоков libuv имеет фиксированный размер, если по какой-либо причине один из этих API работает долго, производительность других (на первый взгляд не связанных) API, выполняющихся в пуле потоков libuv, будет снижаться. Чтобы смягчить эту проблему, можно, например, увеличить размер пула потоков libuv, установив переменную окружения 'UV_THREADPOOL_SIZE' в значение больше 4 (это текущее значение по умолчанию). Однако установка этого значения изнутри процесса через process.env.UV_THREADPOOL_SIZE=size не гарантирует результат, так как пул потоков создаётся ещё во время инициализации среды выполнения, задолго до запуска пользовательского кода. Подробнее см. в документации по пулу потоков libuv.
Полезные параметры V8¶
У V8 есть собственный набор CLI-параметров. Любой CLI-параметр V8, переданный node, будет передан V8 для обработки. Для параметров V8 не даётся гарантии стабильности. Команда V8 сама не считает их частью формального API и оставляет за собой право изменить их в любой момент. Аналогично, на них не распространяются гарантии стабильности Node.js. Многие параметры V8 интересны только разработчикам V8. Тем не менее существует небольшой набор параметров V8, которые широко применимы в Node.js, и они документированы здесь:
--abort-on-uncaught-exception¶
--disallow-code-generation-from-strings¶
--enable-etw-stack-walking¶
--expose-gc¶
--harmony-shadow-realm¶
--heap-snapshot-on-oom¶
--interpreted-frames-native-stack¶
--jitless¶
--max-heap-size¶
Указывает максимальный размер кучи процесса (в мегабайтах).
Обычно этот параметр используется для ограничения объёма памяти, который процесс может использовать для своей JavaScript-кучи.
--max-old-space-size=SIZE (in MiB)¶
Устанавливает максимальный размер старой области памяти V8. По мере приближения потребления памяти к пределу V8 будет тратить больше времени на сборку мусора, пытаясь освободить неиспользуемую память.
На машине с 2 GiB памяти можно установить значение 1536 (1.5 GiB), чтобы оставить часть памяти для других задач и избежать подкачки.
1 | |
--max-semi-space-size=SIZE (in MiB)¶
Устанавливает максимальный размер полупространства для сборщика мусора scavenge в V8 в MiB (мебибайтах). Увеличение максимального размера полупространства может повысить пропускную способность Node.js ценой большего потребления памяти.
Поскольку размер молодого поколения кучи V8 в три раза больше размера полупространства (см. YoungGenerationSizeFromSemiSpaceSize в V8), увеличение полупространства на 1 MiB применяется к каждому из трёх отдельных полупространств и увеличивает размер кучи на 3 MiB. Улучшение пропускной способности зависит от вашей нагрузки (см. #42511).
Значение по умолчанию зависит от лимита памяти. Например, в 64-битных системах с лимитом памяти 512 MiB максимальный размер полупространства по умолчанию равен 1 MiB. При лимите памяти до 2 GiB включительно максимальный размер полупространства по умолчанию в 64-битных системах будет меньше 16 MiB.
Чтобы подобрать наилучшую конфигурацию для вашего приложения, попробуйте разные значения max-semi-space-size при запуске его бенчмарков.
Например, бенчмарк в 64-битной системе:
1 2 3 | |
--perf-basic-prof¶
--perf-basic-prof-only-functions¶
--perf-prof¶
--perf-prof-unwinding-info¶
--prof¶
--security-revert¶
--stack-trace-limit=limit¶
Максимальное количество кадров стека, собираемых в трассировке стека ошибки. Установка значения 0 отключает сбор трассировки стека. Значение по умолчанию: 10.
1 | |