Sprint 25: qwik.dev — ES Module fallback: document is not defined #87
Labels
No labels
bug
docs
feature
housekeeping
html-spec
performance
react-compat
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
glow-all/true-headless-browser#87
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Problembeschreibung
qwik.dev hat 3 uncaught Errors im Crawl. Einer davon: Beim Fallback eines ES Module Imports crasht das Modul mit
document is not defined.Crawl-Output:
Interpretation: Das Modul
q-naDMFAHy.jswird vom CDN geladen (via Bun Plugin), der Plugin versucht es als data: URL zu laden. Wenn das fehlschlägt, wird der Inhalt viaexecuteRaw()als Classic-Script ausgeführt. Aber das Script enthältimport/exportStatements → der klassische Modus kanndocumentnicht auflösen → ReferenceError.Aktuelle Architektur
Option A: Fallback auf Temp-File statt
executeRaw()Kombiniert mit Sprint 22 (NameTooLong): Statt
executeRaw()im Fallback den Modul-Code in eine.mjsTemp-Datei schreiben und perimport("file:///tmp/...")laden.Vorteile: Löst sowohl NameTooLong als auch document-is-not-defined.
Option B: ES Module Shim vor Fallback
Vor
executeRaw()einen minimalen ES Module Shim injecten:var exports = {}; var module = { exports: exports };plus import/export transpilen.Abgelehnt — transpiling von 100KB+ Bundles ist zu teuer.
Option C: Error-Handling verbessern
Akzeptieren dass einige Module nicht fallback-executed werden können, und den Error sauber ans Error-Reporting weitergeben.
Notlösung — qwik.dev hat 177KB DOM trotz der Errors (Haupt-App läuft). Nur Sub-Module crashen.
Vorschlag: Als Sprint 22 Sub-Task implementieren
Wenn Sprint 22 (Temp-File) implementiert ist, löst sich dieses Issue automatisch:
Akzeptanzkriterien:
document is not definedim FallbackTest comment - ignore
Status: Crash gefixt — Spec fehlt noch
Der akute
document is not defined-Crash im Fallback ist gefixt (seit Sprint 22-23). Aktueller Code nutzt_loadFromBase64()/_loadFromBlobURL()stattexecuteRaw()für Module-Fallback —import()hatdocumentim Scope.Was noch fehlt (kompletter ES Module Spec-Stack):
Object.assign(win, mod)kopiert Werte statt Live-Referenzenimport.meta—.url,.resolve()import()im Proxy-Realm — aktuell entweicht aus dem Sandbox→ Wird in einem neuen Issue als kompletter ES Module Spec-Stack adressiert.