Помощь и вопросы

... о версии Node.js на хостинге

Valery
Valery
около 2 месяцев назад
83

судя по всему, по умолчанию система ставит Node 20.. и package ей не указ. по крайней мере, я не нашел способов изменить это. есть способы ставить версии новее?

5 ответов

relaxdevADMINоколо 2 месяцев назад

Нет, откуда вы это взяли ? По умолчанию стоит 24, но он смотрит вашу, может у вас остальные пакеты старые, которые только с 20 работают ? Если npm стоит старый, 9 или 10 он не даст установить node 24, проверьте локально, все библиотеки

relaxdevADMINоколо 2 месяцев назад

Проверьте Dokerfile или смените сборщик на next в настройках проекта Для generic docker-типа сборки (не next/nuxt) логика чуть проще — форс на 20 срабатывает, только если engines.node точно равен "20": bash[ -f package.json ] && [ "$(jq -r '.engines.node // empty' package.json)" == "20" ] Просто пропишите в package.json проекта: json"engines": { "node": "22" }

TypeScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Node 20  это не жёсткий дефолт, а частый случай
Логика выбора образа для Next/Nuxt (и для generic docker-сборки) такая:
bashNODE_MAJOR="24"   # в (28).yml — либо "22" в v2 (11).yml
if [ -f package.json ]; then
  ENGINES_NODE=$(jq -r '.engines.node // empty' package.json)
  if [ -n "$ENGINES_NODE" ]; then
    DETECTED=$(echo "$ENGINES_NODE" | grep -oE '[0-9]+' | head -1)
    if [ "$DETECTED" -ge 18 ]; then
      if [ "$BUILDER_TYPE" = "next" ] && [ "$DETECTED" -lt 20 ]; then
        NODE_MAJOR="20"   # ← принудительный подъём, т.к. Next.js требует >=20
      else
        NODE_MAJOR="$DETECTED"
      fi
    fi
  fi
fi
NODE_IMG="node:${NODE_MAJOR}-alpine"
Valeryоколо 2 месяцев назад

Спасибо, что откликнулись. У меня локально в dev установлен Node 22.14.0, pnpm -11.6.0. не самые модные, но вполне. При сборке докерфайла система упорно ставила Node 20 (хотя в package была прописана актуальная версия). Соответственно, т.к. pnpm 11.6 с Node 20 не работает, деплой падал, пока в package не зажал pnpm 9.15.4 Такой вот даунгрейд. И да, докерфайл не мой - доверился вашей системе.

relaxdevADMINоколо 1 месяца назад

Был баг поправили. теперь логика такая ">=22.12.0" → 24 минимум, не потолок ">=20 <23" → 22 потолок уважается "^20 || ^22" → 22 из альтернатив берётся старшая "22.14.0" → 22 точная версия — это точная версия "16" → 24 ниже 18 не поддерживаем, как и раньше, в логах сборки видно вашу версию и которая запустилась Node починен, >=20.0.0 больше не даёт node:20. Значит пин pnpm@9.15.4 — костыль против уже несуществующей проблемы, и его можно снимать: в package.json проекта "packageManager": "pnpm@11.13.1" # или удалить поле совсем

Valeryоколо 1 месяца назад

tnx

Ответить без регистрации

Изображения, PDF, TXT • Ctrl+V для скриншота • до 5 файлов, 10 MB