Files
ospab.host/DEPLOY_INSTRUCTIONS.md
2025-11-23 14:35:16 +03:00

4.2 KiB
Raw Blame History

🚀 Инструкции по развертыванию обновлений

Проблема

После обновления кода на сервере появляются ошибки:

  • Cannot read properties of undefined (reading 'findMany') - Prisma Client не имеет моделей Post/Comment
  • OAuth endpoints возвращают 404
  • Admin endpoints возвращают 404

Решение

1. Убедитесь, что schema.prisma на сервере актуальна

ssh root@ospab.host
cd /var/www/ospab-host/backend

# Проверьте, что в schema.prisma есть модели Post и Comment
grep -A 5 "model Post" prisma/schema.prisma
grep -A 5 "model Comment" prisma/schema.prisma

Если моделей нет, загрузите schema.prisma с локальной машины:

# На локальной машине (Windows)
cd d:\Ospab-projects\ospabhost8.1\ospabhost\backend
scp prisma/schema.prisma root@ospab.host:/var/www/ospab-host/backend/prisma/

2. Создайте таблицы в базе данных (если их нет)

# На сервере
cd /var/www/ospab-host/backend
npx prisma db push

3. Регенерируйте Prisma Client

# На сервере
npx prisma generate

Эта команда создаст типы для моделей Post и Comment в node_modules/@prisma/client

4. Загрузите обновленный dist с локальной машины

# На локальной машине (Windows)
cd d:\Ospab-projects\ospabhost8.1\ospabhost\backend
scp -r dist/ root@ospab.host:/var/www/ospab-host/backend/

5. Перезапустите backend

# На сервере
pm2 restart backend
pm2 logs backend --lines 50

Проверка

После выполнения всех шагов проверьте:

# 1. OAuth endpoints (должны возвращать 302 redirect)
curl -I https://ospab.host:5000/api/auth/google
curl -I https://ospab.host:5000/api/auth/github
curl -I https://ospab.host:5000/api/auth/yandex

# 2. Admin endpoints (должны возвращать 401 без токена или 200 с токеном)
curl https://ospab.host:5000/api/admin/users

# 3. Blog endpoints (должны возвращать JSON)
curl https://ospab.host:5000/api/blog/posts
curl https://ospab.host:5000/api/blog/admin/posts -H "Authorization: Bearer YOUR_TOKEN"

Что было исправлено в коде

backend/src/index.ts

// Добавлены импорты:
import passport from './modules/auth/passport.config';
import oauthRoutes from './modules/auth/oauth.routes';
import adminRoutes from './modules/admin/admin.routes';

// Добавлена инициализация Passport:
app.use(passport.initialize());

// Подключены маршруты:
app.use('/api/auth', oauthRoutes);     // OAuth (Google/GitHub/Yandex)
app.use('/api/admin', adminRoutes);    // Admin панель

backend/src/modules/auth/oauth.routes.ts

// Убраны типы `any`, добавлен интерфейс:
interface AuthenticatedUser {
  id: number;
  email: string;
  username: string;
}

Troubleshooting

Ошибка: "Cannot read properties of undefined (reading 'findMany')"

Причина: Prisma Client не имеет моделей Post/Comment
Решение: Выполните npx prisma generate на сервере

Ошибка: "Table 'ospabhost.post' doesn't exist"

Причина: Таблицы не созданы в базе данных
Решение: Выполните npx prisma db push на сервере

OAuth возвращает 404

Причина: OAuth маршруты не подключены
Решение: Загрузите обновленный dist и перезапустите backend

Admin endpoints возвращают 404

Причина: Admin маршруты не подключены
Решение: Загрузите обновленный dist и перезапустите backend


Дата обновления: 1 ноября 2025 г.