Сайт работает локально, но не на хостинге
Проект работает только локально, потому что зависит от вашего ноутбука: файла .env, базы на localhost, нечувствительной к регистру файловой системы macOS или режима разработки. На хостинге нужно задать переменные окружения, собрать проект в продакшн-режиме, подключить реальную базу и проверить пути и версии.
Первая помощь и как чиним
- 1Собрать как на проде
Локально запускаем продакшн-сборку и старт, а не dev-сервер, и сравниваем поведение.
- 2Сверить окружение
Версия Node, переменные окружения, адреса API и базы на сервере и у вас.
- 3Проверить файлы и пути
Регистр в импортах, относительные пути, base path для подпапки.
- 4Проверить данные
Где база на проде, доступна ли она с сервера, применены ли миграции.
- 5Настроить хостинг
Fallback-роутинг, порт, процесс, логи — чтобы ошибки было видно.
Чинить самому или отдать в «аптечку»
Мы уже наступили на эти грабли — вам не придётся
Аптечка: что с проектом?
3 вопроса — и мы скажем, сколько стоит починка. Чек-лист безопасности проекта в подарок.
Интервью с собственником и РОПом, аудит текущей CRM и источников заявок.
1–3 дняВоронки, роли, точки контроля. Согласуем до того, как что-то настраивать.
3–5 днейНастраиваем Битрикс24 и дописываем недостающие инструменты. Демо каждую неделю.
1–4 неделиОбучение, база знаний, поддержка. Дорабатываем, пока цифры не поедут вверх.
дальше — с вамиПодробнееразвёрнутое описание, этапы и нюансы
«У меня всё работает» — самая частая фраза в начале разговора о вайб-код проекте. И это правда: на ноутбуке работает. Но сервер — другой компьютер с другой системой, без ваших файлов и без запущенной рядом базы. Общий обзор подобных проблем есть в статье «Аптечка вайб-кода: 8 проблем», здесь — разбор конкретных причин.
Почему так происходит
- Регистр букв. Импорт
./components/buttonнаходит файлButton.tsxна macOS и не находит на Linux. - Нет
.env. Файл в.gitignore, на хостинг он не попал, и все ключи равныundefined. - Сборка зашила старые значения. Переменные
VITE_*иNEXT_PUBLIC_*подставляются в момент сборки. Поменяли на хостинге — надо пересобрать. - Адреса
localhost. Фронтенд на проде пытается достучаться доhttp://localhost:3000— то есть до компьютера посетителя. - Локальная база. SQLite-файл или Postgres на ноутбуке. На serverless-хостинге вроде Vercel файловая система временная, и SQLite там не живёт.
- Разная версия Node. Локально 22, на хостинге 18 — и новые функции языка или пакеты не работают.
- Роутинг. Главная открывается, а прямые ссылки и обновление страницы дают 404, потому что сервер не отдаёт
index.htmlдля путей SPA.
Что проверить самому
- Соберите и запустите проект локально в продакшн-режиме:
npm ci && npm run build && npm start # или npm run preview для Vite
- Сравните список переменных в
.envс тем, что задано на хостинге. - Поищите в коде
localhostи127.0.0.1. - Посмотрите логи сборки и рантайма на хостинге — ошибка почти всегда там, а не в браузере.
- Проверьте версию Node: локально
node -v, на хостинге — в настройках или в полеenginesвpackage.json. - Если сайт в подпапке, а не в корне домена, проверьте
baseвvite.configилиbasePathв Next.js.
Когда звать разработчика. Если продакшн-сборка падает и у вас на ноутбуке, ошибка уже воспроизводится локально, и её можно разобрать вместе с ИИ. Если же локально всё работает и в продакшн-режиме, а на хостинге нет, проблема в окружении: переменных, версиях, правах, сети, базе. Это та зона, которую ИИ не видит, и советы «попробуйте ещё вот это» могут длиться днями. Опытный разработчик обычно находит такую причину по логам хостинга.
Как чиним мы
Воспроизводим продакшн-окружение у себя, находим все расхождения и устраняем их в коде, а не обходными настройками хостинга. Выносим адреса и ключи в переменные с понятным .env.example, фиксируем версию Node, подключаем настоящую базу с миграциями, настраиваем роутинг и логи. Если текущий хостинг не подходит под проект, предлагаем сервер, где он будет работать предсказуемо. Подробнее — на странице «Аптечка вайб-кода».
Сколько стоит
Диагностика — 50 000 ₸, деплой с настройкой сервера, домена и HTTPS — 50 000 ₸, итого от 100 000 ₸. Если проект при этом не собирается, добавляется 40 000 ₸ за запуск и сборку. Рассчитайте точнее в калькуляторе.
Частые вопросы
Почему импорт работал на Mac, а на сервере «Module not found»?
macOS по умолчанию не различает Button.tsx и button.tsx, а Linux различает. Нужно, чтобы имя в импорте точно совпадало с именем файла.
Я поменял переменную на хостинге, но сайт видит старое значение. Почему?
Переменные с префиксом VITE_ или NEXT_PUBLIC_ подставляются в код при сборке. После их изменения проект нужно пересобрать.
Подойдёт ли обычный виртуальный хостинг с PHP?
Для статического сайта на Vite — да. Для Node-бэкенда, Next.js с серверной частью или фоновых задач нужен VPS или платформа с поддержкой Node.
Сделаем так же у вас
Короткий созвон — и вы знаете срок и цену. Или посчитайте сами за 2 минуты.