5.5 KiB
5.5 KiB
Исправление: Пустой экран после верификации
🔴 Проблема
После успешной верификации UI открывается, но моментально пропадает (полностью пустой экран).
✅ Что исправлено
1. Улучшена обработка ошибок
- Добавлено подробное логирование в консоль браузера
- Теперь видно, на каком этапе происходит ошибка
2. Исправлен пустой экран
- Вместо
return nullтеперь показывается сообщение с кнопкой перезагрузки - Это помогает понять, что происходит
3. Отложен запуск initDataChecker
initDataCheckerтеперь запускается только после успешной загрузки пользователя- Это предотвращает преждевременную перезагрузку страницы
4. Улучшена валидация данных
- Проверяется, что
userDataдействительно получен - Если
nullилиundefined- показывается ошибка
🔍 Как диагностировать
Шаг 1: Откройте консоль браузера
- В Telegram откройте приложение
- Нажмите F12 или Cmd+Option+I (Mac)
- Перейдите на вкладку Console
Шаг 2: Посмотрите логи
Должны увидеть:
[App] Начало инициализации...
[App] Telegram WebApp найден, initData: есть
[API] verifyAuth: отправка запроса...
[API] verifyAuth: получен ответ: { hasUser: true, userId: "...", username: "..." }
[App] verifyAuth вернул: данные пользователя
[App] Пользователь установлен, ID: ...
[App] Инициализация завершена, loading: false
Если видите ошибку:
[API] verifyAuth: ошибка: { message: "...", status: 401/500 }
[App] Ошибка инициализации: ...
🐛 Возможные причины
1. Ошибка 401 (Unauthorized)
Причина: initData невалиден или истек
Решение:
- Перезагрузите приложение в Telegram
- Убедитесь, что используете официальный клиент Telegram
2. Ошибка 500 (Server Error)
Причина: Проблема на backend
Решение:
# Проверьте логи backend
docker logs nakama-backend --tail 100
# Ищите ошибки:
# - "Ошибка verify"
# - "MongoDB connection"
# - "MinIO connection"
3. userData = null/undefined
Причина: Backend не вернул данные пользователя
Решение:
- Проверьте маршрут
/api/auth/verifyна backend - Убедитесь, что пользователь существует в БД
- Проверьте, что
respondWithUserработает правильно
4. Ошибка в компонентах Feed/Layout
Причина: Компонент падает при рендеринге
Решение:
- В консоли браузера будет красная ошибка с указанием файла и строки
- Проверьте, что все данные пользователя присутствуют (
user.settings,user.photoUrl, etc.)
🔧 Быстрое решение
1. Перезагрузите приложение
// В консоли браузера
window.location.reload()
2. Проверьте backend
# Проверьте, что backend работает
curl http://your-backend-url/api/health
# Проверьте логи
docker logs nakama-backend -f
3. Проверьте MongoDB
# Подключитесь к MongoDB
docker exec -it nakama-mongodb mongosh
# Проверьте пользователей
use nakama
db.users.find().limit(5)
📋 Контрольный список
- Консоль браузера открыта (F12)
- Видны логи
[App]и[API] - Нет красных ошибок в консоли
- Backend доступен (
/api/health) - MongoDB подключена
- Пользователь существует в БД
initDataвалиден (не истек)
💡 Если все еще не работает
Отправьте мне:
- Логи из консоли браузера (скопируйте все сообщения)
- Логи backend (
docker logs nakama-backend --tail 200) - Скриншот пустого экрана
- Ошибки из консоли (красные сообщения)
✅ После исправления
После применения исправлений вы должны видеть:
- ✅ Логи в консоли на каждом этапе
- ✅ Сообщение об ошибке вместо пустого экрана
- ✅ Кнопку "Перезагрузить" если что-то пошло не так
Теперь откройте приложение и посмотрите консоль браузера! 🔍