From 153b6d4ce0c505e78b48807a659ca4f95d3ad7ea Mon Sep 17 00:00:00 2001 From: Ryback2501 Date: Wed, 17 Jun 2026 16:23:02 +0200 Subject: [PATCH] fix(docker): serve .mjs modules as javascript --- .github/workflows/ci-jobs.yml | 8 ++++++++ Dockerfile | 4 ++++ 2 files changed, 12 insertions(+) diff --git a/.github/workflows/ci-jobs.yml b/.github/workflows/ci-jobs.yml index 06d7571..08f43a2 100644 --- a/.github/workflows/ci-jobs.yml +++ b/.github/workflows/ci-jobs.yml @@ -98,6 +98,14 @@ jobs: sleep 2 done echo "container did not become healthy"; docker logs lobstr; exit 1 + - name: Verify .mjs is served as JavaScript + run: | + ct=$(curl -fsSI http://localhost:8080/vendor/secp256k1.mjs | tr -d '\r' | awk -F': ' 'tolower($1)=="content-type"{print $2}') + echo "vendor/secp256k1.mjs Content-Type: $ct" + case "$ct" in + *javascript*) echo "ok" ;; + *) echo "ERROR: .mjs not served as JavaScript (browsers will refuse the ES module)"; exit 1 ;; + esac - name: Stop container if: always() run: docker rm -f lobstr || true diff --git a/Dockerfile b/Dockerfile index ce8d8f0..0503bed 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,3 +1,7 @@ FROM nginx:alpine +# nginx's default mime.types has no entry for .mjs, so ES module files would be +# served as application/octet-stream and browsers refuse to execute them. Register +# .mjs as JavaScript alongside .js. +RUN sed -i 's#application/javascript\([[:space:]]\+\)js;#application/javascript\1js mjs;#' /etc/nginx/mime.types COPY swa/ /usr/share/nginx/html/ EXPOSE 80