Перейти к основному содержимому

nvm doctor

Обнаружение и исправление типичных проблем NVM for Windows.

Использование​

Usage: nvm doctor [<checks> ...] [flags]

Аргументы​

АргументОбязательныйОписание
[checks ...]НетКонкретные имена проверок для запуска. При опускании выполняются все проверки.

Флаги​

ФлагКраткийОписание
--autofixАвтоматически применять исправления, где поддерживается.
--listВывести список доступных проверок без их выполнения.
--jsonСтруктурированный JSON-вывод для автоматизации.
--measure-deadlinesЗамерить каждый источник загрузки и вывести минимум, среднее и максимум.
--measure-countСколько раз повторять каждое измерение. По умолчанию 3. Не применяется к --auto-deadlines.
--auto-deadlines59 попыток на каждый источник загрузки; сохранить самый медленный sample как ваши дедлайны.

Поведение​

ДетальОписание
BackendДелегирует sync.exe doctor
ОшибкаВозникает, если утилита sync отсутствует или не может быть найдена
РежимыПолный запуск проверок, только список или autofix

Примеры​

# run all checks
nvm doctor

# enumerate available checks only
nvm doctor --list

# run selected checks
nvm doctor path proxy

# run fixes where supported
nvm doctor --autofix

# structured output for automation
nvm doctor --json

# сохранить сетевые дедлайны из 59 попыток на источник
nvm doctor --auto-deadlines

Автоматические сетевые дедлайны​

nvm doctor --auto-deadlines измеряет, сколько реально занимают ваши источники загрузки, затем записывает дедлайны в настройки из самого медленного успешного sample.

Почему 59 попыток​

Время сети плавает. Одна-две пробы могут выглядеть нормально и всё равно пропустить медленные случаи, из‑за которых установки позже получают NVM4501.

Auto-deadlines целится в 95-й процентиль latency запросов (большинство запросов быстрее; примерно один из двадцати медленнее). Doctor берёт максимум выборок как эту оценку.

Чтобы этот максимум был 95%-уверенной верхней границей для 95-го процентиля, нужно достаточно независимых выборок. Число:

[ n = \lceil \ln(1 - 0.95) / \ln(0.95) \rceil = 59 ]

Проще: после 59 независимых попыток шанс около 95%, что хотя бы один sample был не быстрее настоящего 95-го процентиля. Сохранение этого самого медленного времени как дедлайна даёт запас на типичные колебания, не заставляя ждать бесконечно.

Шесть попыток идут параллельно (около 10 раундов). Каждая открывает своё TCP-соединение, поэтому они не делят один сокет. Doctor печатает строку после каждого раунда, например [OK] reachability https://nodejs.org/dist/index.tab 1/10. Неудачная попытка печатает [FAIL] и ошибку.

nvm doctor --auto-deadlines --json пропускает эти progress-строки. JSON содержит готовые измерения и сохранённые дедлайны.

Doctor сохраняет это самое медленное время в ваши настройки. Значение не сохраняется ниже default для этой настройки.

НастройкаСамый медленный sampleDefault
TimeoutReachabilityMsПроверки reachability1500 ms
TimeoutCatalogMsЗагрузка каталога3000 ms
TimeoutCatalogMirrorMsЗагрузка каталога800 ms
TimeoutDownloadMsЗагрузка каталога30000 ms

Если попытка не удалась, doctor не сохраняет дедлайны. Если значение уже задаёт машинная политика, сохранённое вами значение не меняет дедлайн, который использует NVM for Windows.

Пример вывода​

[OK] PATH layout
[OK] Mirror reachability
[WARN] Cached metadata is stale

Проверенная расшифровка (локальный запуск)​

PS> nvm doctor --help
Usage: nvm doctor [<checks> ...] [flags]

Flags:
--autofix
--list
--json

В корпоративных средах запускайте doctor после развёртывания и во время проверок состояния рабочих станций.