52 lines
1.7 KiB
TypeScript
52 lines
1.7 KiB
TypeScript
/**
|
|
* Configuración de conexión al backend
|
|
* Detecta automáticamente el entorno y usa la URL correcta
|
|
*/
|
|
|
|
export function getBackendUrl(): string {
|
|
// 1. Si existe variable de entorno, úsala (override manual)
|
|
if (import.meta.env.VITE_BACKEND_URL) {
|
|
return import.meta.env.VITE_BACKEND_URL;
|
|
}
|
|
|
|
// 2. Detección automática basada en dónde corre el código
|
|
if (typeof window !== 'undefined') {
|
|
// CLIENTE (Browser): usar la URL pública del backend
|
|
// En local: http://localhost:8000
|
|
// En prod: mismo dominio o dominio específico
|
|
const hostname = window.location.hostname;
|
|
|
|
if (hostname === 'localhost' || hostname === '127.0.0.1') {
|
|
return 'http://localhost:8000/api';
|
|
}
|
|
|
|
// En producción, asumir que el backend está en el mismo dominio /api
|
|
// o usar un subdominio específico
|
|
return `${window.location.protocol}//${hostname}/api`;
|
|
} else {
|
|
// SERVIDOR (SvelteKit SSR/Endpoints): usar URL interna
|
|
// En Docker: http://backend:8000
|
|
// En local: http://127.0.0.1:8000 (IPv4 explícito)
|
|
|
|
// Detectar si estamos en Docker por hostname
|
|
const isDocker = process.env.HOSTNAME?.includes('docker');
|
|
|
|
if (isDocker) {
|
|
return 'http://backend:8000/api';
|
|
}
|
|
|
|
// En desarrollo local, usar IPv4 explícito para evitar problemas con IPv6
|
|
return 'http://127.0.0.1:8000/api';
|
|
}
|
|
}
|
|
|
|
export const BACKEND_URL = getBackendUrl();
|
|
|
|
// Helper para logs
|
|
export function logBackendConfig() {
|
|
console.log('[Backend Config]', {
|
|
url: BACKEND_URL,
|
|
isServer: typeof window === 'undefined',
|
|
});
|
|
}
|