-
Notifications
You must be signed in to change notification settings - Fork 0
Fix: 404 and MIME errors on stale Vite assets after redeployment #178
Copy link
Copy link
Closed
Milestone
Description
Problème
Après un redéploiement, les navigateurs avec un onglet ouvert ou un index.html en cache demandent les anciens fichiers JS hashés par Vite (ex: index-CcuS1ukv.js) qui n'existent plus.
Deux symptômes :
- 404 sur les anciens assets
- "type MIME interdit (text/html)" — le
try_files ... /index.htmlsert du HTML à la place du JS manquant
Logs :
frontend-1 | [error] open() "/usr/share/nginx/html/assets/index-CcuS1ukv.js" failed (2: No such file or directory)
Le chargement du module à l'adresse « https://www.veaf.org/assets/index-BDzLx6k2.js » a été bloqué en raison d'un type MIME interdit (« text/html »).
Cause
index.htmln'a pas de headers anti-cache → le navigateur peut servir une version en cache qui référence d'anciens assets hashés- Le
try_files $uri $uri/ /index.htmldansfrontend/nginx.confsert du HTML quand un asset JS n'existe plus → erreur MIME
Solution
1. frontend/nginx.conf
Ajouter :
location = /index.htmlavecCache-Control: no-cache, no-store, must-revalidatelocation /assets/avectry_files $uri =404(pas de fallback SPA)
2. deploy/nginx.conf
Ajouter les directives proxy_pass_header pour propager les headers Cache-Control du frontend nginx.
Vérification
# index.html ne doit PAS être caché
curl -I https://www.veaf.org/
# → Cache-Control: no-cache, no-store, must-revalidate
# Un asset manquant doit retourner 404 (pas du HTML)
curl -I https://www.veaf.org/assets/nonexistent.js
# → HTTP 404
# Les assets existants restent cachés longtemps
curl -I https://www.veaf.org/assets/index-XXXXX.js
# → Cache-Control: public, immutableReactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels