Разница между локальной средой и сервером часто ломает SSR-приложения: не те env-переменные, другая версия Node.js, отсутствующие файлы, ошибки доступа к API или базе.
Когда это становится проблемой
На компьютере разработчика страница работает, а после деплоя пользователь видит 500. Без логов кажется, что проблема случайная, но у server-side rendering всегда есть конкретная причина.
Что проверяю в первую очередь
- Логи Node.js, process manager и веб-сервера
- Env-переменные и секреты на сервере
- Версию Node.js, package manager и build-команды
- Ошибки SSR: доступ к window, cookies, headers, API
- Права на файлы, кеш и директорию .next
Как исправляю
Я воспроизвожу production-сборку и смотрю серверный stack trace. Затем сравниваю окружение локально и на сервере, чтобы найти расхождение.
- Исправляю env и production build
- Убираю клиентский код из SSR-участков
- Настраиваю process manager, proxy и права
- Проверяю API, базу и внешние зависимости
Что важно не сломать
Нельзя ориентироваться только на dev-режим. Next.js в dev и production может вести себя по-разному, особенно при SSR и кэше.
Что будет после исправления
- Страница открывается на сервере без 500
- Production build воспроизводим
- Логи показывают реальные ошибки
- Деплой становится предсказуемым
Что подготовить перед обращением
- Ссылка на страницу с 500
- Репозиторий или архив проекта
- Логи сервера
- Файл env без раскрытия секретов публично
Вопросы и ответы
Можно ли исправить без полной переделки?
Да, чаще всего это настройка окружения или SSR-ошибка. Полный перенос проекта не нужен.
Сколько времени занимает диагностика?
Если есть stack trace, причина находится быстро. Без логов сначала нужно настроить нормальное логирование.
Нужна похожая задача?
Напишите в Telegram @rabotator_support и коротко опишите проблему. Я посмотрю симптомы, предложу понятный план работ и скажу, какие доступы нужны для безопасного исправления.