... о версии Node.js на хостинге
судя по всему, по умолчанию система ставит Node 20.. и package ей не указ. по крайней мере, я не нашел способов изменить это. есть способы ставить версии новее?
судя по всему, по умолчанию система ставит Node 20.. и package ей не указ. по крайней мере, я не нашел способов изменить это. есть способы ставить версии новее?
Нет, откуда вы это взяли ? По умолчанию стоит 24, но он смотрит вашу, может у вас остальные пакеты старые, которые только с 20 работают ? Если npm стоит старый, 9 или 10 он не даст установить node 24, проверьте локально, все библиотеки
Проверьте 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" }
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"
Спасибо, что откликнулись. У меня локально в dev установлен Node 22.14.0, pnpm -11.6.0. не самые модные, но вполне. При сборке докерфайла система упорно ставила Node 20 (хотя в package была прописана актуальная версия). Соответственно, т.к. pnpm 11.6 с Node 20 не работает, деплой падал, пока в package не зажал pnpm 9.15.4 Такой вот даунгрейд. И да, докерфайл не мой - доверился вашей системе.
Был баг поправили. теперь логика такая ">=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" # или удалить поле совсем
tnx