nvm doctor
Обнаружение и исправление типичных проблем NVM for Windows.
Использование
Usage: nvm doctor [<checks> ...] [flags]
Аргументы
| Аргумент | Обязательный | Описание |
|---|---|---|
[checks ...] | Нет | Конкретные имена проверок для запуска. При опускании выполняются все проверки. |
Флаги
| Флаг | Краткий | Описание |
|---|---|---|
--autofix | Автоматически применять исправления, где поддерживается. | |
--list | Вывести список доступных проверок без их выполнения. | |
--json | Структурированный JSON-вывод для автоматизации. | |
--measure-deadlines | Замерить каждый источник загрузки и вывести минимум, среднее и максимум. | |
--measure-count | Сколько раз повторять каждое измерение. По умолчанию 3. Не применяется к --auto-deadlines. | |
--auto-deadlines | 59 попыток на каждый источник загрузки; сохранить самый медленный 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 для этой настройки.
| Настройка | Самый медленный sample | Default |
|---|---|---|
TimeoutReachabilityMs | Проверки reachability | 1500 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 после развёртывания и во время проверок состояния рабочих станций.