Развертывание SvelteKit на Lizard

Используйте @sveltejs/adapter-node для сборки сервера SvelteKit на Lizard. Он создаёт build/, который запускается командой node build на порту 3000. Установите и настройте адаптер явно; каркас, в котором остался adapter-auto, не задаёт цель развертывания на Node.

Начните с полного примера исходного кода, в котором есть конфигурация и файлы, используемые в этом рецепте.

Настройка адаптера

npm install --save-dev @sveltejs/adapter-node

В svelte.config.js сохраните существующие preprocess и остальные настройки, но задайте kit.adapter как Node-адаптер:

import adapter from '@sveltejs/adapter-node';
 
export default {
  kit: { adapter: adapter() },
};

Оставьте только тот адаптер развертывания, который планируете использовать. В частности, неиспользуемая зависимость @sveltejs/adapter-static может заставить текущий детектор выбрать статический путь, даже если в конфиге импортирован adapter-node.

ПараметрЗначение
Сборкаnpm run build, обычно vite build
Выводbuild/
Среда выполненияnode build
Хост и портHOST=0.0.0.0, PORT=3000
Порт сервиса3000

Проверка продакшн-сервера

npm ci
npm run build
HOST=0.0.0.0 PORT=3000 ORIGIN=http://localhost:3000 node build

Откройте страницу с серверным рендерингом и отправьте форму (form action), если она есть в приложении. Сохраните путь вывода адаптера по умолчанию для детекции, используемой в этом руководстве.

Развертывание и настройка публичного origin

После настройки CLI:

lizard init --name sveltekit-app
lizard add --service web
lizard up --service web --port 3000
lizard ps --json

Задайте ORIGIN равным точному публичному HTTPS-ориджину из вывода развертывания, без пути. Например, замените этот плейсхолдер на свой реальный URL:

lizard secrets set ORIGIN=https://YOUR_PUBLIC_HOST --service web

Используйте кастомный домен вместо этого, если именно он будет ориджином для посетителей. Повторно проверьте формы после изменения переменной. Для нескольких разрешённых ориджинов или URL, полученных через прокси, прочитайте руководство по Node-серверу SvelteKit и настройте доверенные заголовки прокси намеренно.

Верификация и устранение неисправностей

Изучайте логи сборки и рантайма с помощью lizard logs --build --service web --json и lizard logs --service web --json. Откройте внутренний маршрут напрямую, отправьте форму и запросите несуществующий маршрут.

Если формы выдают ошибку межсайтовой отправки, проверьте ORIGIN до отключения проверки безопасности. Если node build не находит сервер, убедитесь в активном адаптере и пути вывода. Оставьте переопределения команды сервиса не заданными, чтобы использовался путь lizardpack.

Статические сайты SvelteKit

Приложение, которое может предрендерить все нужные страницы, может использовать @sveltejs/adapter-static, его вывод build/ по умолчанию и порт сервиса 80. Такой вывод не может запускать серверные экшены или эндпойнты во время запроса. Настройте предрендеринг для нужных маршрутов; установка пакета одной недостаточна.

Установите @sveltejs/adapter-static и замените импорт адаптера в svelte.config.js:

import adapter from '@sveltejs/adapter-static';
 
export default {
  kit: { adapter: adapter() },
};

Для сайта, все маршруты которого можно сгенерировать, добавьте это в src/routes/+layout.js:

export const prerender = true;
export const trailingSlash = 'always';

Удалите неиспользуемые адаптеры развертывания из зависимостей. Запустите npm run build и проверьте, что build/ содержит каждую требуемую страницу. Для вывода по умолчанию оставьте переопределения команды сервиса не заданными и разверните новый сервис на порту 80. Новые сборки будут отдавать сгенерированный HTML и возвращать HTTP 404 для отсутствующих страниц. Не используйте повторно порт 3000 из серверного рецепта для nginx.

Используйте статические маршруты и 404, чтобы выбирать между сгенерированными HTML-маршрутами и SPA-фолбэком. См. SvelteKit static adapter для опций и ограничений фреймворка.

См. проверенные версии и результаты в облаке для проверок развертывания от 9 сентября 2026 года и их ограничений.