Параметры командной строки
Node.js поставляется с различными параметрами командной строки. Эти параметры предоставляют встроенную отладку, несколько способов выполнения скриптов и другие полезные параметры выполнения.
Чтобы просмотреть это руководство в виде страницы справки в терминале, выполните man node.
Резюме
node [options] [V8 options] [script.js | -e "script" | -] [--] [arguments]
node inspect [script.js | -e "script" | <host>:<port>] …
node --v8-options
Выполните без аргументов, чтобы запустить REPL.
Дополнительную информацию о node inspect, пожалуйста, см. в документации отладчика.
Параметры
Все параметры, включая параметры V8, позволяют разделять слова как дефисами (-), так и подчеркиваниями (_).
Например, --pending-deprecation эквивалентно --pending_deprecation.
-
Псевдоним для stdin, аналогично использованию - в других утилитах командной строки, что означает, что скрипт будет считан из stdin, а остальные параметры передаются этому скрипту.
--
Указывает конец параметров Node.js. Остальные аргументы передаются скрипту. Если перед этим не указано имя файла скрипта или скрипт eval/print, то следующий аргумент будет использован как имя файла скрипта.
--abort-on-uncaught-exception
Прерывание вместо выхода приводит к созданию файла core для постобъектного анализа с помощью отладчика (таких как lldb, gdb, и mdb).
Если этот флаг передан, поведение все еще может быть настроено на не прерывание через process.setUncaughtExceptionCaptureCallback() (и через использование модуля domain, который его использует).
--completion-bash
Вывести скрипт завершения bash для Node.js, пригодный для копирования.
$ node --completion-bash > node_bash_completion $ source node_bash_completion
--enable-fips
Включить криптографию, соответствующую стандарту FIPS, при запуске. (Требуется, чтобы Node.js был скомпилирован с ./configure --openssl-fips.)
--experimental-modules
Включить экспериментальную поддержку модулей ES и кеширование модулей.
--experimental-repl-await
Включить экспериментальную поддержку ключевого слова await на верхнем уровне в REPL.
--experimental-vm-modules
Включить экспериментальную поддержку модулей ES в модуле vm.
--experimental-worker
Включить экспериментальные рабочие потоки, используя модуль worker_threads.
--force-fips
Принудительно включить криптографию, соответствующую стандарту FIPS, при запуске. (Не может быть отключена из кода скрипта.) (Требуются те же требования, что и для --enable-fips.)
--icu-data-dir=file
Указать путь к загрузке данных ICU. (Переопределяет NODE_ICU_DATA.)
--inspect-brk[=[host:]port]
Активировать инспектор на host:port и остановить выполнение при запуске пользовательского скрипта. По умолчанию host:port равен 127.0.0.1:9229.
--inspect-port=[host:]port
Установить host:port для использования при активации инспектора. Полезно при активации инспектора путем отправки сигнала SIGUSR1.
Хост по умолчанию равен 127.0.0.1.
См. ниже предупреждение о безопасности по поводу использования параметра host.
--inspect[=[host:]port]
Активировать инспектор на host:port. По умолчанию 127.0.0.1:9229.
Интеграция V8 инспектора позволяет таким инструментам, как Chrome DevTools и IDE, отлаживать и профилировать экземпляры Node.js. Инструменты подключаются к экземплярам Node.js через TCP-порт и общаются с использованием Протокола Chrome DevTools.
Предупреждение: привязка инспектора к сочетанию публичного IP-адреса и порта небезопасна
Привязка инспектора к публичному IP-адресу (включая 0.0.0.0) с открытым портом небезопасна, поскольку это позволяет внешним хостам подключаться к инспектору и выполнять атаку удаленного выполнения кода .
Если вы указываете хост, убедитесь, что выполняется хотя бы одно из следующих условий: либо хост не является публичным, либо порт должным образом защищен брандмауэром, чтобы предотвратить нежелательные подключения.
Более конкретно, --inspect=0.0.0.0 небезопасен, если порт (9229 по умолчанию) не защищен брандмауэром.
См. раздел последствия для безопасности отладки для получения дополнительной информации.
--loader=file
Указать file пользовательского экспериментального загрузчика модулей ECMAScript.
--insecure-http-parser
Использовать небезопасный анализатор HTTP, который принимает некорректные HTTP-заголовки. Это может обеспечить межсетевую совместимость с несоответствующими реализациями HTTP. Это также может позволить атаку "request smuggling" и другие HTTP-атаки, которые основаны на принятии некорректных заголовков. Избегайте использования этого параметра.
--max-http-header-size=size
Указать максимальный размер, в байтах, HTTP-заголовков. По умолчанию 8 КБ.
--napi-modules
Этот параметр является бесполезным. Он сохранен для совместимости.
--no-deprecation
Отключить предупреждения о устаревших функциях.
--no-force-async-hooks-checks
Отключает контрольные проверки во время выполнения async_hooks. Они все еще будут включены динамически, когда async_hooks включен.
--no-warnings
Отключить все предупреждения процесса (включая предупреждения о устаревших функциях).
--openssl-config=file
Загрузить файл конфигурации OpenSSL при запуске. Среди прочего, это может быть использовано для включения криптографии, соответствующей стандарту FIPS, если Node.js скомпилирован с ./configure --openssl-fips.
--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
Флаг командной строки --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 для получения дополнительной информации.
--prof
Создать вывод профилировщика V8.
--prof-process
Обработать вывод профилировщика V8, созданный с помощью параметра V8 --prof.
--redirect-warnings=file
Выводить предупреждения процесса в заданный файл вместо вывода в stderr. Файл будет создан, если он не существует, и к нему будет добавлен текст, если он уже существует. Если при попытке записать предупреждение в файл произойдет ошибка, предупреждение будет выведено в stderr.
--throw-deprecation
Выбрасывать ошибки для устаревших функций.
--title=title
Устанавливать process.title при запуске.
--tls-cipher-list=list
Указать альтернативный список шифров по умолчанию для TLS. Требуется, чтобы Node.js был скомпилирован с поддержкой криптографии (по умолчанию).
--tls-max-v1.2
Ничего не делает, [tls.DEFAULT_MAX_VERSION][] всегда 'TLSv1.2'. Существует для совместимости с Node.js 11.x и выше.
--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'. Используйте это для отключения поддержки более ранних версий TLS, которые менее безопасны.
--trace-deprecation
Выводить трассировки стека для устаревших функций.
--trace-event-categories
Запятой-разделенный список категорий, которые должны отслеживаться, когда отслеживание событий трассировки включено с помощью --trace-events-enabled.
--trace-event-file-pattern
Шаблонная строка, определяющая путь к файлу для данных отслеживания событий, она поддерживает ${rotation} и ${pid}.
--trace-events-enabled
Включает сбор информации о трассировке событий.
--trace-sync-io
Выводит трассировку стека всякий раз, когда обнаруживается синхронное ввод-вывод после первого цикла событий.
--trace-warnings
Выводить трассировки стека для предупреждений процесса (включая устаревшие функции).
--track-heap-objects
Отслеживать выделение объектов кучи для снимков кучи.
--unhandled-rejections=mode
По умолчанию все необработанные отклонения вызывают предупреждение, плюс предупреждение об устаревших функциях для самого первого необработанного отклонения, если не используется обработчик unhandledRejection.
Использование этого флага позволяет изменить поведение при возникновении необработанного отклонения. Можно выбрать один из трех режимов:
-
strict: Отобразить необработанное отклонение как исключение. -
warn: Всегда выводить предупреждение, независимо от того, установлен ли обработчикunhandledRejection, но не выводить предупреждение об устаревших функциях. -
none: Отключить все предупреждения.
--use-bundled-ca, --use-openssl-ca
Использовать встроенный магазин сертификатов Mozilla CA, предоставленный текущей версией Node.js, или использовать стандартный магазин сертификатов CA OpenSSL. Стандартный магазин выбирается во время компиляции.
Встроенный магазин CA, поставляемый с Node.js, представляет собой снимок магазина сертификатов Mozilla CA, который фиксируется при выпуске. Он идентичен на всех поддерживаемых платформах.
Использование магазина OpenSSL позволяет изменять магазин внешним образом. Для большинства дистрибутивов Linux и BSD этот магазин поддерживается разработчиками дистрибутива и системными администраторами. Расположение магазина CA OpenSSL зависит от конфигурации библиотеки OpenSSL, но это можно изменить во время выполнения с помощью переменных окружения.
См. SSL_CERT_DIR и SSL_CERT_FILE.
--v8-options
Вывести параметры командной строки V8.
--v8-pool-size=num
Установить размер пула потоков V8, который будет использоваться для выделения фоновых задач.
Если установлено 0 , V8 выберет подходящий размер пула потоков, основанный на количестве доступных процессоров.
Если предоставленное значение больше максимального значения V8, будет выбрано максимальное значение.
--zero-fill-buffers
Автоматически заполняет нулями все вновь выделенные экземпляры Buffer и SlowBuffer.
-c, --check
Проверить синтаксис скрипта без выполнения.
-e, --eval "script"
Вычислить следующий аргумент как JavaScript. Модули, которые предопределены в REPL, также могут быть использованы в script.
В Windows, используя cmd.exe, одинарная кавычка не будет работать должным образом, так как она распознаёт только двойные " для цитирования. В Powershell или Git bash, оба ' и " применимы.
-h, --help
Вывести параметры командной строки node. Вывод этой опции менее подробный, чем в этом документе.
-i, --interactive
Открывает REPL, даже если stdin не выглядит как терминал.
-p, --print "script"
Идентично -e , но выводит результат.
-r, --require module
Загрузить указанный модуль при запуске.
Следует правилам разрешения модулей require(). module может быть либо путем к файлу, либо именем модуля node.
-v, --version
Вывести версию node.
Переменные среды
NODE_DEBUG=module[,…]
Запятой-разделенный список основных модулей, которые должны выводить отладочную информацию.
NODE_DEBUG_NATIVE=module[,…]
Запятой-разделенный список основных модулей C++, которые должны выводить отладочную информацию.
NODE_DISABLE_COLORS=1
Если установлено 1, цвета не будут использоваться в REPL.
NODE_EXTRA_CA_CERTS=file
Если установлено, общеизвестные "корневые" CA (например, VeriSign) будут расширены дополнительными сертификатами в file. Файл должен содержать один или несколько доверенных сертификатов в формате PEM. Сообщение будет выведено (один раз) с помощью process.emitWarning(), если файл отсутствует или имеет неправильный формат, но любые другие ошибки будут проигнорированы.
Обратите внимание, что ни общеизвестные, ни дополнительные сертификаты не используются, когда свойство опций ca явно указано для клиента или сервера TLS или HTTPS.
Эта переменная среды игнорируется, когда node выполняется с правами root или имеет установленные Linux права на файлы.
NODE_ICU_DATA=file
Путь к данным ICU (объект Intl). Расширит связанные данные при компиляции с поддержкой small-icu.
NODE_NO_WARNINGS=1
Если установлено 1, предупреждения процесса будут отключены.
NODE_OPTIONS=options...
Список параметров командной строки, разделенных пробелами. options... интерпретируются так, как если бы они были указаны в командной строке до фактической командной строки (поэтому они могут быть переопределены). Node.js завершит работу с ошибкой, если будет использоваться опция, которая не разрешена в среде, например -p или файл скрипта.
Если значение опции содержит пробел (например, путь, указанный в --require), он должен быть экранирован двойными кавычками. Например:
--require "./my path/file.js"
Разрешенные опции Node.js:
--enable-fips--experimental-modules--experimental-repl-await--experimental-vm-modules--experimental-worker--force-fips--icu-data-dir--insecure-http-parser--inspect--inspect-brk--inspect-port--loader--max-http-header-size--napi-modules--no-deprecation--no-force-async-hooks-checks--no-warnings--openssl-config--pending-deprecation--redirect-warnings-
--require,-r --throw-deprecation--title--tls-cipher-list--trace-deprecation--trace-event-categories--trace-event-file-pattern--trace-events-enabled--trace-sync-io--trace-warnings--track-heap-objects--unhandled-rejections--use-bundled-ca--use-openssl-ca--v8-pool-size--zero-fill-buffers
Допустимые параметры V8:
--abort-on-uncaught-exception--max-old-space-size--perf-basic-prof--perf-prof--stack-trace-limit
NODE_PATH=path[:…]
Список каталогов, разделённых символом ':', добавляемых в начало пути поиска модулей.
В Windows это список, разделённый символом ';'.
NODE_PENDING_DEPRECATION=1
При установке в 1, генерировать предупреждения о предстоящем устаревании.
Предупреждения о предстоящем устаревании API, как правило, идентичны предупреждениям о выходе из строя во время выполнения, за исключением того, что они по умолчанию выключены и не будут выводиться, если не задан флаг командной строки --pending-deprecation, или переменная среды NODE_PENDING_DEPRECATION=1. Предупреждения о предстоящем устаревании используются для предоставления своеобразной системы «раннего оповещения», которую разработчики могут использовать для обнаружения использования устаревшего API.
NODE_PRESERVE_SYMLINKS=1
При установке в 1, заставляет загрузчик модулей сохранять символические ссылки при разрешении и кэшировании модулей.
NODE_REDIRECT_WARNINGS=file
При установке, сообщения об ошибках будут выводиться в указанный файл вместо вывода в stderr. Файл будет создан, если он не существует, и будет добавлен в конец, если существует. Если при попытке записи сообщения об ошибке в файл возникнет ошибка, сообщение об ошибке будет выведено в stderr. Это эквивалентно использованию флага командной строки --redirect-warnings=file.
NODE_REPL_HISTORY=file
Путь к файлу, используемому для хранения постоянной истории REPL. Путь по умолчанию ~/.node_repl_history, который переопределяется этой переменной. Установка значения в пустую строку ('' или ' ') отключает постоянную историю REPL.
NODE_TLS_REJECT_UNAUTHORIZED=value
Если value равно '0', проверка сертификатов отключена для TLS-соединений. Это делает TLS, и HTTPS, соответственно, небезопасными. Использование этой переменной среды настоятельно не рекомендуется.
NODE_V8_COVERAGE=dir
При установке, Node.js начнёт выводить V8 JavaScript покрытие кода в указанный каталог. Покрытие выводится как массив объектов ScriptCoverage:
{
"result": [
{
"scriptId": "67",
"url": "internal/tty.js",
"functions": []
}
]
}
NODE_V8_COVERAGE автоматически будет передаваться в дочерние процессы, упрощая инструментирование приложений, вызывающих функции из семейства child_process.spawn(). NODE_V8_COVERAGE можно установить в пустую строку, чтобы предотвратить распространение.
В настоящее время покрытие собирается только в главном потоке и не будет выводиться для кода, выполняемого рабочими потоками.
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.
UV_THREADPOOL_SIZE=size
Установите число потоков, используемых в пуле потоков libuv, в size потоков.
Node.js использует асинхронные системные API по мере возможности, но там, где их нет, используется пул потоков libuv для создания асинхронных API Node на основе синхронных системных API. Node.js API, использующие пул потоков:
- все
fsAPI, кроме API мониторинга файлов и тех, которые явно синхронные crypto.pbkdf2()-
crypto.randomBytes(), если оно не используется без обратного вызова crypto.randomFill()dns.lookup()- все
zlibAPI, кроме тех, которые явно синхронные
Поскольку пул потоков libuv имеет фиксированный размер, это означает, что если по какой-либо причине любой из этих API выполняется долго, другие (предположительно не связанные) API, работающие в пуле потоков libuv, будут испытывать снижение производительности. Для решения этой проблемы одним из возможных решений является увеличение размера пула потоков libuv, установив переменную среды 'UV_THREADPOOL_SIZE' на значение больше, чем 4 (ее текущее значение по умолчанию). Более подробная информация доступна в документации по пулу потоков libuv.
© Joyent, Inc. and other Node contributors
Licensed under the MIT License.
Node.js is a trademark of Joyent, Inc. and is used with its permission.
We are not endorsed by or affiliated with Joyent.
https://nodejs.org/dist/latest-v10.x/docs/api/cli.html