2.9 KiB
title, type, tags, sources, related, updated
| title | type | tags | sources | related | updated | |||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| nvm-windows: смена версии Node — junction, per-version глобалы, PATH-кэш | concept |
|
|
2026-08-18 |
nvm-windows: смена версии Node
Рецепт перехода Node 22 → 24.19.0 на рабочей машине (nvm-windows, 2026-08-18). Переиспользуемо для любой смены версии.
Шаги
nvm list # текущая: * 22.22.0, 18.20.8
nvm install 24.19.0 # или nvm install 24 (latest 24.x LTS)
nvm use 24.19.0 # переключает junction
node --version # v24.19.0 (в НОВОМ терминале)
Грабли (все три — проверены эмпирически)
-
Junction, не копия.
C:\nvm4w\nodejs— junction на активную версию (→ C:\Users\vitya\AppData\Local\nvm\v24.19.0).nvm useменяет только target junction'а. Старые уже-запущенные процессы продолжают работать на старой версии (бинарь загружен в память) — перезапуск нужен только новым процессам. -
Глобальные пакеты per-version.
npm i -g Xставит в…\nvm\<версия>\node_modules\— послеnvm useглобалы НЕ переносятся. Переустановить:npm i -g @sched/cli@0.1.2 @sched/daemon@0.3.4 …(старые остаются в каталоге старой версии, не мешают; откат =nvm use 22). -
Текущий shell кэширует PATH. После
nvm usebash-сессия может выдаватьnode: command not found(кэш резолва) или держать старый бинарь. Фиксы:hash -rв bash / новый терминал /cmd /c "node --version"— cmd-сессия резолвит свежий junction.
npm 11: allow-scripts на global-установках
npm 11 предупреждает про install-скрипты, не покрытые allowScripts
(напр. ssh2@1.17.0). В общем случае косметика — пакет грузится чистой
JS-реализацией (require('ssh2').Client — function). Если нативный модуль
действительно нужен — npm i -g --allow-scripts=<pkg>.
Evidence (переход 2026-08-18, sched F&F)
schedd --helpчерез junction на Node 24.19.0 → полный help, exit 0, stderr пуст (ExperimentalWarning node:sqlite ушёл — Node 24 его не имеет)- демон под 24: health
{ok:true, version:"0.3.2"} - junction realpath-фикс isMain (см. related-концепт) на 24 работает