Как развернуть Vite React проект на Timeweb Cloud
После прекращения поддержки create-react-app многие разработчики перешли на Vite для сборки React-приложений. Однако при попытке задеплоить проект на хостинге Timeweb Cloud возникают типичные ошибки: пустая страница, 404 или некорректная загрузка ресурсов. В этой статье объясняем, как правильно настроить Vite для деплоя на Timeweb Cloud, и разбираем частые проблемы.
Почему Vite проект не работает на Timeweb Cloud?
Основная причина - неверно указан базовый путь (base) в конфиге Vite. По умолчанию Vite предполагает, что приложение разворачивается в корень домена. На Timeweb Cloud проект может располагаться в подпапке или иметь специфическую структуру. Кроме того, сервер хостинга не обрабатывает клиентские маршруты React Router, что приводит к 404 при прямом переходе на страницу.
Настройка vite.config.js для Timeweb Cloud
Для корректной работы добавьте в vite.config.js параметр base. Если сайт расположен в корне домена, укажите base: '/'. Если в подпапке - например, /my-app/. Также обязательно настройте fallback для SPA с помощью плагина или .htaccess.
import { defineConfig } from 'vite';
import react from '@vitejs/plugin-react';
export default defineConfig({
plugins: [react()],
base: '/', // или '/subfolder/' для подпапки
build: {
outDir: 'dist',
sourcemap: false,
emptyOutDir: true,
},
server: {
port: 3000,
host: true,
},
resolve: {
alias: {
'@': '/src',
},
},
});Как правильно собрать проект для деплоя
Запустите сборку командой npm run build или yarn build. В папке dist появится готовый статический набор файлов. Загрузите содержимое папки dist на хостинг Timeweb Cloud через FTP или файловый менеджер в панели управления. Убедитесь, что точка входа - index.html.
Решение проблемы с 404 для SPA (React Router)
Если вы используете React Router, при прямом переходе на страницу (например, /about) сервер возвращает 404, так как не знает о клиентской маршрутизации. На Timeweb Cloud создайте файл .htaccess в корне папки проекта со следующим содержимым:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.html$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.html [L]
</IfModule>Этот код перенаправляет все запросы на index.html, позволяя React Router обработать маршруты.
Частые ошибки и их исправление
- Пустая страница после деплоя - проверьте параметр
baseв vite.config.js. Если ресурсы загружаются с неверным путём, исправьте его. - Ошибка 500 - убедитесь, что права доступа к файлам установлены корректно (644 для файлов, 755 для папок).
- Не отображаются изображения - используйте абсолютные пути или импортируйте изображения через JS (import img from './img.png').
- Sourcemaps в продакшене - отключите
sourcemap: trueв конфиге сборки, чтобы уменьшить размер бандла и ускорить загрузку.
Заключение
Деплой Vite React проекта на Timeweb Cloud не требует сложных манипуляций. Достаточно правильно указать базовый путь, настроить рерайтинг для SPA и загрузить собранные файлы. Следуя этой инструкции, вы сможете избежать типичных ошибок и успешно развернуть приложение. Если остались вопросы - обратитесь к документации Vite или создайте тикет в поддержку Timeweb Cloud.