fix: MapLibre-Worker vollstaendig buendeln, damit die Linie auch live erscheint
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) <noreply@anthropic.com>
This commit is contained in:
parent
6273f20484
commit
0432540d5a
1 changed files with 14 additions and 11 deletions
|
|
@ -8,17 +8,20 @@
|
||||||
import * as maplibregl from 'maplibre-gl'
|
import * as maplibregl from 'maplibre-gl'
|
||||||
import type { Map as MapLibreMap, Marker } from 'maplibre-gl'
|
import type { Map as MapLibreMap, Marker } from 'maplibre-gl'
|
||||||
import 'maplibre-gl/dist/maplibre-gl.css'
|
import 'maplibre-gl/dist/maplibre-gl.css'
|
||||||
// MapLibre 6 liegt als drei Dateien vor und lädt seinen Worker zur
|
// MapLibre 6 liegt als drei Dateien vor (Hauptdatei, shared, worker) und
|
||||||
// Laufzeit über import.meta.url aus dem eigenen Verzeichnis nach. Vites
|
// lädt den Worker zur Laufzeit relativ zum eigenen Verzeichnis nach. Beides
|
||||||
// Dependency-Optimierung bündelt aber nur den Haupteinstiegspunkt nach
|
// — Vites Dependency-Optimierung im Dev-Modus wie der Produktionsbuild —
|
||||||
// node_modules/.vite/deps — daneben liegt keine Worker-Datei. Der Worker
|
// bringt den Worker nicht an eine Stelle, an der er seine Nachbardatei
|
||||||
// startet dann zwar, sein Import läuft ins Leere, und er antwortet auf
|
// maplibre-gl-shared.mjs findet. Der Worker startet dann zwar, sein
|
||||||
// keine Nachricht mehr. Folge: GeoJSON-Quellen bleiben dauerhaft im
|
// Import läuft ins Leere, und er antwortet auf keine Nachricht mehr.
|
||||||
// Ladezustand, es wird keine Trail-Linie gezeichnet. Rasterkacheln
|
// Folge: GeoJSON-Quellen bleiben dauerhaft im Ladezustand, es wird keine
|
||||||
// brauchen keinen Worker, deshalb erscheint die Karte trotzdem und der
|
// Trail-Linie gezeichnet. Rasterkacheln brauchen keinen Worker, deshalb
|
||||||
// Fehler sieht nach fehlenden Daten aus.
|
// erscheint die Karte trotzdem und der Fehler sieht nach fehlenden Daten
|
||||||
// Der explizite Pfad umgeht das: ?url liefert die echte Datei-URL.
|
// aus.
|
||||||
import workerUrl from 'maplibre-gl/dist/maplibre-gl-worker.mjs?url'
|
// ?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)
|
maplibregl.setWorkerUrl(workerUrl)
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue