From 7c5a2d87b92e0a0197083f34fdf63a2b27389e4e Mon Sep 17 00:00:00 2001 From: Kevin Lecou Date: Wed, 16 Sep 2026 15:11:07 +0200 Subject: [PATCH] Corrige le MIME type des fichiers .mjs (bug bloquant en prod) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit nginx:alpine ne connaît pas l'extension .mjs par défaut et la servait en application/octet-stream — le navigateur refusait d'exécuter les modules ES (browser-image-compression.mjs, qrcode-generator.mjs), ce qui plantait silencieusement TOUT le JS qui les importe : page upload invité bloquée sur "Chargement...", générateur QR et carton imprimable cassés depuis leur déploiement. Aucune erreur visible sans ouvrir la console navigateur. Découvert suite à un vrai test d'upload de Kévin depuis son téléphone. --- deploy/nginx-photobooth.conf | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/deploy/nginx-photobooth.conf b/deploy/nginx-photobooth.conf index f142338..a5a2e86 100644 --- a/deploy/nginx-photobooth.conf +++ b/deploy/nginx-photobooth.conf @@ -4,6 +4,17 @@ server { root /usr/share/nginx/html; index index.html; + # nginx:alpine ne connaît pas l'extension .mjs par défaut et la sert en + # application/octet-stream -> le navigateur refuse d'exécuter le module + # ES (import bloqué), ce qui fait planter silencieusement tout script + # qui l'importe (constaté en prod le 2026-09-16 : browser-image- + # compression.mjs importé par upload.js, page bloquée sur "Chargement..."). + location ~ \.mjs$ { + types { text/javascript mjs; } + default_type text/javascript; + try_files $uri =404; + } + # /e/ -> page upload invité, le slug est lu côté client via # window.location.pathname (cf. src/e/upload.js) location /e/ {