- Diagnóstico del problema de caché - Pasos detallados para limpiar Service Worker y caché - Verificación y troubleshooting - Solución paso a paso
4.3 KiB
4.3 KiB
🔧 Solución Completa: Error useLayoutEffect
❌ Error
Uncaught TypeError: Cannot read properties of undefined (reading 'useLayoutEffect')
at vendor-other-RJb9Jc5z.js:18:11569
🔍 Diagnóstico
Este error indica que:
- El navegador está usando una versión ANTIGUA en caché
- El archivo
vendor-other-RJb9Jc5z.jses de un build anterior - El nuevo build NO genera
vendor-other(o genera uno diferente) - El Service Worker o caché del navegador está sirviendo la versión antigua
✅ Soluciones Aplicadas
1. Code Splitting Mejorado
- ✅ Todo lo relacionado con React está en
vendor-react - ✅ Eliminado
vendor-other(todo va avendor-utils) - ✅ Añadido
dedupe: ['react', 'react-dom']en Vite
2. Service Worker Actualizado
- ✅ Versión de cache actualizada a
v1.0.2 - ✅ Esto fuerza al navegador a descargar nuevos archivos
🔧 Solución Inmediata (OBLIGATORIO)
Paso 1: Desactivar Service Worker
Chrome/Edge:
- Abre DevTools (F12)
- Ve a Application > Service Workers
- Para cada Service Worker activo:
- Click en Unregister
- Marca "Bypass for network" si está disponible
- Cierra DevTools
Firefox:
- Abre DevTools (F12)
- Ve a Application > Almacenamiento > Service Workers
- Click en Desregistrar
- Cierra DevTools
Paso 2: Limpiar Caché del Navegador
Chrome/Edge:
Ctrl+Shift+Delete(Windows/Linux)Cmd+Shift+Delete(Mac)- Selecciona:
- ✅ "Cached images and files"
- ✅ "Hosted app data" (si está disponible)
- Rango: "Todo el tiempo"
- Click en "Borrar datos"
Firefox:
Ctrl+Shift+Delete(Windows/Linux)Cmd+Shift+Delete(Mac)- Selecciona:
- ✅ "Caché"
- ✅ "Datos de sitios web"
- Rango: "Todo"
- Click en "Limpiar ahora"
Paso 3: Limpiar Cache Storage
Chrome/Edge:
- DevTools (F12) > Application > Cache Storage
- Click derecho en cada cache > Delete
- O selecciona todos y click en el icono de papelera
Firefox:
- DevTools (F12) > Application > Almacenamiento > Caché
- Click en "Limpiar todo"
Paso 4: Recargar
- Cierra TODAS las pestañas de la aplicación
- Cierra el navegador completamente
- Abre el navegador de nuevo
- Navega a la aplicación
- Recarga con recarga forzada:
Ctrl+Shift+R(Windows/Linux)Cmd+Shift+R(Mac)
Paso 5: Verificar (Opcional - Modo Incógnito)
- Abre una ventana incógnita/privada
- Navega a la aplicación
- Si funciona en incógnito, confirma que es problema de caché
🔧 En el Servidor
Asegúrate de que el build se hizo con el nuevo código:
cd /var/www/emerges-tes
git pull origin main
# Limpiar completamente
rm -rf node_modules package-lock.json
# Reinstalar
npm install
# Rebuild
npm run build
# Verificar que NO existe vendor-other-RJb9Jc5z.js
ls -la dist/assets/ | grep vendor-other
# Deberías ver vendor-other-CP1puROj.js (nuevo) o nada
🧪 Verificación
Después de limpiar caché, verifica en DevTools:
-
Network tab:
- Recarga la página
- Busca
vendor-otheren las peticiones - Verifica que el hash sea diferente (no
RJb9Jc5z)
-
Console:
- No debería aparecer el error de
useLayoutEffect - Si aparece, el caché no se limpió correctamente
- No debería aparecer el error de
💡 Si el Problema Persiste
-
Verificar que el build en servidor es correcto:
ssh root@207.180.226.141 cd /var/www/emerges-tes ls -la dist/assets/ | grep vendor -
Forzar actualización del Service Worker:
- Incrementar
CACHE_VERSIONenpublic/sw.js - Hacer nuevo build y deploy
- Incrementar
-
Desactivar Service Worker temporalmente:
- Comentar el registro en
src/main.tsx - Hacer build y deploy
- Probar sin Service Worker
- Comentar el registro en
📋 Checklist Final
- Service Worker desactivado
- Caché del navegador limpiado
- Cache Storage limpiado
- Navegador cerrado y reabierto
- Recarga forzada realizada
- Build en servidor actualizado
- Verificado que no hay
vendor-other-RJb9Jc5z.jsen Network tab
🎯 Causa Raíz
El problema es caché del navegador/Service Worker, no el código. El código está correcto, pero el navegador está usando una versión antigua que tenía React mal resuelto.
La solución es limpiar completamente el caché siguiendo los pasos arriba.