require node >=18 in ai-setup, not just presence

ai-setup.sh проверял только наличие node через command -v, поэтому системный Node v12 (Ubuntu 22.04) проходил проверку и установка NodeSource 22 не запускалась. Из-за этого хук claude-notifier падал с SyntaxError на optional chaining (?.) и nullish coalescing (??), которые поддерживаются только начиная с Node 14. Теперь скрипт извлекает мажорную версию и при значении меньше 18 ставит/обновляет Node, чтобы регенерация не возвращала сломанные хуки.

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
ekaterina soloveva
2026-07-14 11:26:49 +03:00
parent c379ee8efc
commit 0c5057bc21

View File

@@ -94,8 +94,19 @@ fi
# ── 1. Node.js ─────────────────────────────────────────────── # ── 1. Node.js ───────────────────────────────────────────────
info "Проверяю Node.js..." info "Проверяю Node.js..."
if ! command -v node &>/dev/null; then # Хуки (claude-notifier и др.) используют optional chaining (?.) и nullish
info "Пытаюсь установить Node.js..." # coalescing (??) — нужен Node >=18. Проверяем не только наличие node, но и
# мажорную версию, иначе системный v12 (Ubuntu 22.04) проходит проверку, а хуки падают.
node_major=0
if command -v node &>/dev/null; then
node_major="$(node -p 'process.versions.node.split(".")[0]' 2>/dev/null || echo 0)"
fi
if [ "${node_major:-0}" -lt 18 ]; then
if [ "${node_major:-0}" -gt 0 ]; then
info "Найден Node.js v${node_major}, нужен >=18. Обновляю..."
else
info "Пытаюсь установить Node.js..."
fi
if command -v brew &>/dev/null; then if command -v brew &>/dev/null; then
brew install node brew install node
elif command -v apt-get &>/dev/null; then elif command -v apt-get &>/dev/null; then