From 0432540d5a46f02c1e33be018b2de8b74c80a288 Mon Sep 17 00:00:00 2001 From: Daniel Michelberger Date: Fri, 14 Aug 2026 16:51:58 +0200 Subject: [PATCH] fix: MapLibre-Worker vollstaendig buendeln, damit die Linie auch live erscheint MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Der vorige Fix wirkte nur im Dev-Modus. Live blieb die Trail-Linie aus, obwohl das Worker-Asset ausgeliefert wurde (HTTP 200). Ursache: Das per ?url eingebundene Asset ist nur eine Rohkopie der Paketdatei. Deren erste Zeile ist ein relativer Import auf die Nachbardatei: import{...}from"./maplibre-gl-shared.mjs" Diese Datei kopiert der Build nicht mit — unter _app/immutable/assets/maplibre-gl-shared.mjs antwortet die Produktion mit 404. Der Worker startet dadurch, sein Import scheitert, und er antwortet auf keine Nachricht mehr. GeoJSON-Quellen bleiben im Ladezustand, es wird keine Linie gezeichnet. Im Dev-Modus fiel das nicht auf, weil Vite dort aus node_modules aufloest, wo die shared-Datei danebenliegt. ?worker&url statt ?url laesst Vite den Worker samt Abhaengigkeiten zu einer eigenstaendigen Datei buendeln. Verifiziert am Build-Artefakt: Der Worker liegt nun unter _app/immutable/workers/ und ist 469695 statt 19122 Bytes gross, enthaelt also den shared-Code; eine Referenz auf maplibre-gl-shared existiert nicht mehr, womit der 404 zur Laufzeit entfaellt. Ueber "node build" ausgeliefert antwortet er mit HTTP 200 in voller Groesse. svelte-check ohne Fehler, alle 19 Tests bestehen. Co-Authored-By: Claude Opus 5 (1M context) --- frontend/src/lib/components/TrailMap.svelte | 25 ++++++++++++--------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/frontend/src/lib/components/TrailMap.svelte b/frontend/src/lib/components/TrailMap.svelte index cf68304..c4fee32 100644 --- a/frontend/src/lib/components/TrailMap.svelte +++ b/frontend/src/lib/components/TrailMap.svelte @@ -8,17 +8,20 @@ import * as maplibregl from 'maplibre-gl' import type { Map as MapLibreMap, Marker } from 'maplibre-gl' import 'maplibre-gl/dist/maplibre-gl.css' - // MapLibre 6 liegt als drei Dateien vor und lädt seinen Worker zur - // Laufzeit über import.meta.url aus dem eigenen Verzeichnis nach. Vites - // Dependency-Optimierung bündelt aber nur den Haupteinstiegspunkt nach - // node_modules/.vite/deps — daneben liegt keine Worker-Datei. Der Worker - // startet dann zwar, sein Import läuft ins Leere, und er antwortet auf - // keine Nachricht mehr. Folge: GeoJSON-Quellen bleiben dauerhaft im - // Ladezustand, es wird keine Trail-Linie gezeichnet. Rasterkacheln - // brauchen keinen Worker, deshalb erscheint die Karte trotzdem und der - // Fehler sieht nach fehlenden Daten aus. - // Der explizite Pfad umgeht das: ?url liefert die echte Datei-URL. - import workerUrl from 'maplibre-gl/dist/maplibre-gl-worker.mjs?url' + // MapLibre 6 liegt als drei Dateien vor (Hauptdatei, shared, worker) und + // lädt den Worker zur Laufzeit relativ zum eigenen Verzeichnis nach. Beides + // — Vites Dependency-Optimierung im Dev-Modus wie der Produktionsbuild — + // bringt den Worker nicht an eine Stelle, an der er seine Nachbardatei + // maplibre-gl-shared.mjs findet. Der Worker startet dann zwar, sein + // Import läuft ins Leere, und er antwortet auf keine Nachricht mehr. + // Folge: GeoJSON-Quellen bleiben dauerhaft im Ladezustand, es wird keine + // Trail-Linie gezeichnet. Rasterkacheln brauchen keinen Worker, deshalb + // erscheint die Karte trotzdem und der Fehler sieht nach fehlenden Daten + // aus. + // ?worker&url bündelt den Worker samt Abhängigkeiten zu einer eigenständigen + // Datei — ein blosses ?url würde nur die Rohdatei kopieren und ihren + // relativen Import auf ./maplibre-gl-shared.mjs unaufgelöst lassen (404). + import workerUrl from 'maplibre-gl/dist/maplibre-gl-worker.mjs?worker&url' maplibregl.setWorkerUrl(workerUrl)