From 0c5057bc21571438437d81bd137df4de33811dab Mon Sep 17 00:00:00 2001 From: ekaterina soloveva Date: Tue, 14 Jul 2026 11:26:49 +0300 Subject: [PATCH] require node >=18 in ai-setup, not just presence MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- scripts/ai-setup.sh | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/scripts/ai-setup.sh b/scripts/ai-setup.sh index 8c8d94c..d16f875 100755 --- a/scripts/ai-setup.sh +++ b/scripts/ai-setup.sh @@ -94,8 +94,19 @@ fi # ── 1. Node.js ─────────────────────────────────────────────── info "Проверяю Node.js..." -if ! command -v node &>/dev/null; then - info "Пытаюсь установить Node.js..." +# Хуки (claude-notifier и др.) используют optional chaining (?.) и nullish +# 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 brew install node elif command -v apt-get &>/dev/null; then