nakama/🔧_ИСПРАВЛЕНИЯ_СЕРВЕРА.txt

148 lines
7.6 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

╔═══════════════════════════════════════════════════════════════════╗
║ ║
║ 🔧 ИСПРАВЛЕНИЯ ДЛЯ СЕРВЕРА 🔧 ║
║ ║
╚═══════════════════════════════════════════════════════════════════╝
ИСПРАВЛЕНО:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✅ 1. Добавлены недостающие зависимости в package.json
• helmet: ^7.1.0
• express-mongo-sanitize: ^2.2.0
• xss-clean: ^0.1.4
• hpp: ^0.2.3
✅ 2. Исправлена логика авторизации в App.jsx
• Проверка наличия window.Telegram?.WebApp перед проверкой пользователя
• Добавлена задержка на инициализацию Telegram Web App (300ms)
• Проверка наличия initData (строка) вместо initDataUnsafe.user
• Правильная обработка официального клиента Telegram - авторизация через API даже если user еще не распарсен
• Backend распарсит initData и создаст/найдет пользователя
✅ 3. Добавлена зависимость validator в package.json
• validator: ^13.11.0 - для валидации и санитизации данных
КОМАНДЫ ДЛЯ ОБНОВЛЕНИЯ НА СЕРВЕРЕ:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
# 1. Подключиться к серверу
ssh root@nakama.glpshchn.ru
# 2. Остановить приложение (чтобы избежать постоянных ребутов)
pm2 stop nakama-backend
# 3. Перейти в директорию проекта
cd /var/www/nakama
# 4. Обновить код (если используете Git)
git pull origin main
# 5. Установить недостающие зависимости
npm install helmet express-mongo-sanitize xss-clean hpp validator --save
# Или установить все зависимости заново
npm install --production
# 6. Проверить что зависимости установлены
npm list helmet express-mongo-sanitize xss-clean hpp validator
# 7. Пересобрать frontend (с исправленной логикой авторизации)
cd frontend
npm run build
cd ..
# 8. Проверить что сервер запускается (вручную)
cd backend
node server.js
# Если есть ошибки - исправить их
# Если все ок - остановить (Ctrl+C)
# 9. Запустить через PM2
pm2 start backend/server.js --name nakama-backend --update-env
# Или если уже есть конфиг:
pm2 restart nakama-backend --update-env
# 10. Проверить статус
pm2 status
pm2 logs nakama-backend --lines 50
БЫСТРАЯ КОМАНДА (одна строка):
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
ssh root@nakama.glpshchn.ru "cd /var/www/nakama && pm2 stop nakama-backend && npm install helmet express-mongo-sanitize xss-clean hpp validator --save && cd frontend && npm run build && cd .. && pm2 start backend/server.js --name nakama-backend --update-env && sleep 2 && pm2 status && pm2 logs nakama-backend --lines 30"
ПРОВЕРКА ПОСЛЕ ОБНОВЛЕНИЯ:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
# 1. Проверить что приложение запущено
pm2 status
# Должно быть: nakama-backend | online
# 2. Проверить логи (не должно быть ошибок MODULE_NOT_FOUND)
pm2 logs nakama-backend --lines 50
# Не должно быть: Error: Cannot find module 'helmet'
# 3. Проверить health endpoint
curl http://localhost:3000/health
# Должно вернуть: {"status":"ok","environment":"production",...}
# 4. Проверить через браузер
curl https://nakama.glpshchn.ru/health
# Должно вернуть: {"status":"ok",...}
# 5. Проверить Nginx
sudo systemctl status nginx
sudo nginx -t
# 6. Проверить логи Nginx
sudo tail -f /var/log/nginx/error.log
# Не должно быть 502 ошибок
ЧТО ИСПРАВЛЕНО:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✅ Проблема 1: Error: Cannot find module 'helmet'
РЕШЕНИЕ: Добавлены зависимости в package.json
✅ Проблема 2: Даже с офф клиента Telegram просит авторизацию
РЕШЕНИЕ: Исправлена логика в App.jsx - теперь проверяет наличие initData
(строка) вместо initDataUnsafe.user. Если есть initData, пытается
авторизоваться через API (backend распарсит initData). Это решает
проблему когда в официальном клиенте Telegram initDataUnsafe.user
еще не распарсен, но initData уже доступен.
✅ Проблема 4: Error: Cannot find module 'validator'
РЕШЕНИЕ: Добавлена зависимость validator в package.json
✅ Проблема 3: 502 ошибка и постоянные ребуты
РЕШЕНИЕ: После установки зависимостей приложение должно запускаться
без ошибок и перестать ребутиться
ВАЖНО:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
1. После установки зависимостей ОБЯЗАТЕЛЬНО пересобрать frontend
(npm run build в директории frontend)
2. Перезапустить PM2 с флагом --update-env для обновления переменных
3. Проверить логи PM2 после перезапуска
4. Если все еще есть ошибки - проверить что все зависимости установлены:
npm list helmet express-mongo-sanitize xss-clean hpp validator
ГОТОВО! ✅
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
После выполнения этих команд все три проблемы должны быть решены!