Files
hotel-hacienda/docs/TROUBLESHOOTING.md
Consultoria AS 411d517ba4 docs: documentación extensiva del proyecto
- 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
2026-06-09 16:26:09 -07:00

4.6 KiB

🔧 Solución de Problemas Comunes

Índice

  1. Backend
  2. Frontend
  3. Base de Datos
  4. Integraciones Externas
  5. Producción

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:

  1. Verificar variables EMAIL_HOST, EMAIL_PORT, EMAIL_USER, EMAIL_PASS
  2. Para Gmail, usar "App Password", no la contraseña normal
  3. 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:

  1. Verificar FACTURAS_API_TOKEN y FACTURAS_ISSUER_RFC
  2. Verificar que el rango de fechas no exceda el límite de la API
  3. Revisar logs del backend

Banxico retorna error

Causa: Token inválido o serie incorrecta.

Solución:

  1. Verificar BANXICO_TOKEN
  2. La serie usada es SF43718 (Fix de USD/MXN)
  3. 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