chore: wiki +2 концепта (nvm-junction isMain gotcha, nvm-windows switch), 4 июльских ⚪-блока флипнуты 🟢, handoff: волна вышла, ретест в след. сессии
This commit is contained in:
54
.wiki/concepts/nvm-windows-node-switch.md
Normal file
54
.wiki/concepts/nvm-windows-node-switch.md
Normal file
@@ -0,0 +1,54 @@
|
||||
---
|
||||
title: "nvm-windows: смена версии Node — junction, per-version глобалы, PATH-кэш"
|
||||
type: concept
|
||||
tags: [windows, nvm, node, npm, migration, recipe]
|
||||
sources: []
|
||||
related: [concepts/nvm-junction-ismain-gate-gotcha.md]
|
||||
updated: 2026-08-18
|
||||
---
|
||||
|
||||
# nvm-windows: смена версии Node
|
||||
|
||||
Рецепт перехода Node 22 → 24.19.0 на рабочей машине (nvm-windows, 2026-08-18).
|
||||
Переиспользуемо для любой смены версии.
|
||||
|
||||
## Шаги
|
||||
|
||||
```powershell
|
||||
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 (в НОВОМ терминале)
|
||||
```
|
||||
|
||||
## Грабли (все три — проверены эмпирически)
|
||||
|
||||
1. **Junction, не копия.** `C:\nvm4w\nodejs` — junction на активную версию
|
||||
(`→ C:\Users\vitya\AppData\Local\nvm\v24.19.0`). `nvm use` меняет только
|
||||
target junction'а. Старые уже-запущенные процессы продолжают работать на
|
||||
старой версии (бинарь загружен в память) — перезапуск нужен только новым
|
||||
процессам.
|
||||
|
||||
2. **Глобальные пакеты 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`).
|
||||
|
||||
3. **Текущий shell кэширует PATH.** После `nvm use` bash-сессия может
|
||||
выдавать `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 работает
|
||||
Reference in New Issue
Block a user