Развертывание Nuxt на Lizard
Запустите Nuxt на Lizard с пресетом node-server от Nitro. Сборка создаёт .output/server/index.mjs, а процесс Node.js обслуживает страницы и серверные маршруты на порту 3000. Для сгенерированного сайта на порту 80 используйте рецепт для статических сайтов ниже.
Настройка продакшн-сборки
Используйте актуальный Lizard CLI из раздела Подготовка проекта. Версия 0.3.95 исключает метаданные macOS-архивов при загрузке. Если старый CLI сообщает об ошибке маршрута ._*.ts, обновите CLI и загрузите снова.
Установите пресет в nuxt.config.ts:
export default defineNuxtConfig({
nitro: { preset: 'node-server' },
});Объедините эти скрипты в package.json, сохраняя остальные скрипты, необходимые вашему приложению:
{
"scripts": {
"dev": "nuxt dev",
"build": "nuxt build",
"start": "HOST=0.0.0.0 PORT=3000 node .output/server/index.mjs"
}
}Скрипт запуска использует оболочку Linux в контейнере развертывания. lizardpack определяет зависимость nuxt и запускает скрипты сборки и запуска. В новом проекте Nuxt может не быть start; добавьте его вместо того, чтобы полагаться на то, что nuxt dev обслужит продакшн-сборку.
| Настройка | Значение |
|---|---|
| Сборка | npm run build |
| Точка входа сервера | .output/server/index.mjs |
| Запуск | npm run start |
| Порт сервиса | 3000 |
Проверка собранного приложения
npm ci
npm run build
npm run startОткройте http://localhost:3000, запросите внутреннюю страницу напрямую и вызовите один из ваших маршрутов server/api, если они есть. Убедитесь, что отчёт сборки указывает на пресет Node-сервера. Пресет Nitro для конкретного провайдера может создать другую точку входа.
Развертывание
После настройки CLI выполните из каталога Nuxt-приложения:
lizard init --name nuxt-app
lizard add --service web
lizard up --service web --port 3000
lizard logs --build --service web --json
lizard logs --service web --json
lizard ps --jsonНе включайте в загрузку файлы .nuxt/, .output/, node_modules/ и .env. Включайте исходный код, конфигурацию и локфайл. Существующие переопределения сборки/запуска сервиса обходят используемое здесь определение; см. порядок решения о сборке.
Среда выполнения-конфигурация
Объявите настройки времени выполнения в runtimeConfig и настройте соответствующие значения NUXT_* для сервиса. Храните секреты вне runtimeConfig.public; публичная часть попадает в браузер. Значения, используемые для предрендеринга страниц, всё равно влияют на сгенерированную сборку, поэтому проверяйте как маршруты времени запроса, так и предрендеренные маршруты после изменений.
Используйте переменные и секреты для настройки сервиса и хранилище и восстановление для долговечных данных. Не рассматривайте локальный кэш или файл сессии как общее хранилище между репликами.
Устранение неполадок
Если процесс сообщает об отсутствующем .output/server/index.mjs, проверьте пресет и вывод сборки. Если сообщается об отсутствующем скрипте запуска, добавьте приведённый выше. Если сайт никогда не становится здоровым, проверьте хост и порт.
Для чисто сгенерированного Nuxt-сайта обслуживайте .output/public/ с помощью статического Dockerfile и правильной обработкой маршрутов. Не запускайте этот вывод командой Node из примера выше. Руководство по развертыванию Nuxt объясняет выводы Node и генерации; статические маршруты и 404 описывает настройку статического сервера Lizard.
Генерация статического сайта
Для HTML-генерации замените Node-пресет на явные настройки prerender и измените скрипт сборки на nuxt generate:
export default defineNuxtConfig({
nitro: {
prerender: { crawlLinks: true, routes: ['/'] },
},
});Добавьте нелинкованные или динамические маршруты в routes, когда краулер не может их обнаружить. Запустите npm run build и убедитесь, что существуют .output/public/index.html и файлы ваших внутренних маршрутов. В тесте с Nuxt 4.5.2 сохранение preset: 'node-server' при переключении только на nuxt generate дало fallback-страницы без маршрутов сайта. Успешная сборка сама по себе не гарантировала, что экспорт содержит сайт.
Используйте Dockerfile и конфигурацию nginx из статических маршрутов и 404 со скриптом сборки build, выходной директорией .output/public и портом сервиса 80. Статический контейнер не запускает серверные маршруты Nuxt и не читает runtime config для уже сгенерированных страниц.
См. проверенные версии и результаты в облаке для проверок развертывания от 9 сентября 2026 г. и их ограничений.