- README.md con guía completa de instalación y arquitectura - docs/BACKEND.md — guía detallada del API - docs/FRONTEND.md — guía del SPA React - docs/DATABASE.md — funciones SQL y patrones de datos - docs/API.md — referencia completa de endpoints REST - docs/DEPLOYMENT.md — guía de despliegue en producción - docs/TROUBLESHOOTING.md — solución de problemas comunes - CHANGELOG.md — historial de cambios - CONTRIBUTING.md — guía de contribución
4.6 KiB
🔧 Solución de Problemas Comunes
Índice
Backend
Error: "Conectado a PostgreSQL" no aparece
Causa: Variables de entorno de DB incorrectas o PostgreSQL no está corriendo.
Solución:
# Verificar PostgreSQL
sudo systemctl status postgresql
# Verificar variables de entorno
cat backend/hotel_hacienda/.env | grep DB_
# Probar conexión manual
node -e "require('./backend/hotel_hacienda/src/db/connection')"
Error: CORS bloquea peticiones del frontend
Causa: URL_CORS no coincide con el dominio del frontend.
Solución:
# En backend/.env
URL_CORS=https://hotel.consultoria-as.com
# Sin slash al final
Error: "Cannot find module 'pg'"
Causa: Dependencias no instaladas.
Solución:
cd backend/hotel_hacienda
npm install
Emails no se envían
Causa: Credenciales SMTP incorrectas o servidor bloqueando.
Solución:
- Verificar variables
EMAIL_HOST,EMAIL_PORT,EMAIL_USER,EMAIL_PASS - Para Gmail, usar "App Password", no la contraseña normal
- Revisar logs:
pm2 logs hotel-api
Frontend
Error: "Failed to fetch" o "Network Error"
Causa: VITE_API_BASE_URL apunta a localhost en producción.
Solución:
# Verificar .env del frontend
cat frontend/Frontend-Hotel/.env
# Debe ser:
VITE_API_BASE_URL=https://hotel.consultoria-as.com/api
Página en blanco después del build
Causa: Rutas de React Router no configuradas en Nginx.
Solución: Asegurar que Nginx tenga:
location / {
try_files $uri $uri/ /index.html;
}
Error: useAuth is not exported
Causa: Bug conocido. AuthContext.jsx no exporta useAuth.
Solución temporal:
// En vez de:
import { useAuth } from "../context/AuthContext";
// Usar:
import { AuthContext } from "../context/AuthContext";
const { user, login, logout } = useContext(AuthContext);
Tailwind no aplica estilos
Causa: Tailwind v4 usa configuración diferente o index.css no tiene las directivas.
Solución: Verificar que src/index.css contenga:
@tailwind base;
@tailwind components;
@tailwind utilities;
Base de Datos
Error: "function newexpensev2 does not exist"
Causa: Backup no restaurado completamente o función no migrada.
Solución:
# Restaurar backup completo
sudo -u postgres psql -d hotel_hacienda -f backupcondatos22122025.sql
# Verificar funciones existentes
sudo -u postgres psql -d hotel_hacienda -c "\df public.*"
Error: "duplicate key value violates unique constraint"
Causa: Algunas funciones SQL no son idempotentes y se llaman dos veces.
Solución: Revisar la función SQL correspondiente. Agregar IF EXISTS o ON CONFLICT.
Stock duplicado en inventario
Causa: Dos procesos tocan el mismo stock (ver análisis técnico en DOCUMENTACION_TECNICA.md, sección "Problema de duplicación en inventario").
Solución: Decidir si el stock se actualiza en purchaseentry() o en setpaymentstatusv2(), no en ambos.
Integraciones Externas
Stripe no devuelve datos
Causa: STRIPE_SECRET_KEY incorrecta o modo live/test mezclado.
Solución:
# Verificar que la key comience con sk_test_ o sk_live_
cat backend/.env | grep STRIPE
API de Facturas devuelve error
Causa: Token expirado, RFC incorrecto, o fechas fuera de rango.
Solución:
- Verificar
FACTURAS_API_TOKENyFACTURAS_ISSUER_RFC - Verificar que el rango de fechas no exceda el límite de la API
- Revisar logs del backend
Banxico retorna error
Causa: Token inválido o serie incorrecta.
Solución:
- Verificar
BANXICO_TOKEN - La serie usada es
SF43718(Fix de USD/MXN) - Verificar que el token no haya expirado
Producción
PM2 no inicia al reiniciar servidor
Solución:
pm2 startup
pm2 save
Nginx error 502 Bad Gateway
Causa: Backend no está corriendo o escucha en puerto diferente.
Solución:
# Verificar proceso
pm2 list
# Verificar puerto
sudo ss -tlnp | grep 3000
# Reiniciar
pm2 restart hotel-api
sudo systemctl restart nginx
Certificado SSL expirado
Solución:
sudo certbot renew --dry-run
sudo certbot renew
sudo systemctl reload nginx
Para problemas no listados aquí, revisar los logs detallados:
- Backend:
pm2 logs hotel-api- Nginx:
sudo tail -f /var/log/nginx/hotel-error.log- PostgreSQL:
sudo tail -f /var/log/postgresql/postgresql-*.log