From 6a508f468b6b1022d329b70962ae432e6ad4d80f Mon Sep 17 00:00:00 2001 From: dmolinari Date: Wed, 3 Sep 2025 14:30:20 -0300 Subject: [PATCH] Fix 1430 --- Elecciones-Web/frontend/frontend.nginx.conf | 22 ++++++++-------- Elecciones-Web/frontend/vite.config.ts | 28 +++------------------ 2 files changed, 16 insertions(+), 34 deletions(-) diff --git a/Elecciones-Web/frontend/frontend.nginx.conf b/Elecciones-Web/frontend/frontend.nginx.conf index a8d7186..cb3958c 100644 --- a/Elecciones-Web/frontend/frontend.nginx.conf +++ b/Elecciones-Web/frontend/frontend.nginx.conf @@ -4,20 +4,22 @@ server { listen 80; server_name localhost; + # Directorio raíz donde están los archivos de la app root /usr/share/nginx/html; index index.html; - # 1. Manejo explícito para el manifest.json - # El '=' hace que sea una coincidencia exacta y de alta prioridad. - location = /manifest.json { - # Evita que el navegador guarde en caché el manifest, que puede cambiar con cada build. - add_header 'Cache-Control' 'no-cache, no-store, must-revalidate'; - # Intenta servir el archivo. Si no existe, devuelve un 404 real. - try_files $uri =404; - } - - # 2. Manejo de todas las demás rutas para la SPA + # Configuración para servir los archivos estáticos y manejar el enrutamiento de la SPA location / { + # Intenta servir el archivo solicitado directamente ($uri), + # luego como un directorio ($uri/), + # y si no encuentra nada, devuelve el index.html + # Esto es crucial para que el enrutamiento de React funcione. try_files $uri $uri/ /index.html; } + + # Opcional: optimizaciones para archivos estáticos + location ~* \.(?:css|js|jpg|jpeg|gif|png|ico|svg|woff|woff2)$ { + expires 1y; + add_header Cache-Control "public"; + } } \ No newline at end of file diff --git a/Elecciones-Web/frontend/vite.config.ts b/Elecciones-Web/frontend/vite.config.ts index c4b9cce..b47343a 100644 --- a/Elecciones-Web/frontend/vite.config.ts +++ b/Elecciones-Web/frontend/vite.config.ts @@ -1,39 +1,19 @@ +// frontend/vite.config.ts import { defineConfig } from 'vite' import react from '@vitejs/plugin-react' -import path from 'path'; export default defineConfig({ plugins: [react()], build: { - // Mantenemos la configuración de librería para generar el UMD - lib: { - entry: path.resolve(__dirname, 'src/main.tsx'), - name: 'EleccionesWidgets', - fileName: 'elecciones-widgets', // Vite añadirá .umd.js automáticamente - formats: ['umd'] - }, outDir: 'dist', - manifest: true, // Le dice a Vite que genere el manifest.json - rollupOptions: { - // Asegura que el manifest se genere incluso en modo librería - output: { - assetFileNames: "assets/[name].[hash].[ext]", - chunkFileNames: "assets/[name].[hash].js", - entryFileNames: "assets/[name].[hash].js" - } - } + manifest: true, // ¡Crucial! Le dice a Vite que genere el manifest.json }, server: { proxy: { - // Cualquier petición que empiece con /api... '/api': { - // ...redirígela a nuestro backend de .NET - target: 'http://localhost:5217', - // Cambia el origen de la petición para que el backend la acepte + target: 'http://localhost:5217', // Ajuste el puerto si es diferente changeOrigin: true, - // No necesitamos reescribir la ruta, ya que el backend espera /api/... - // rewrite: (path) => path.replace(/^\/api/, '') }, } } -}) +}) \ No newline at end of file