TX032

Yogas WebAssembly konnte nicht geladen werden

Konsole

Text.js error TX032: Could not load Yoga's WebAssembly from … (…).

Ursache

initYoga() lädt Yogas WebAssembly aus einer .wasm-Datei in Text.js-Apps (text dev, text build), in Builds mit der Auflösungsbedingung @textjs/client und wenn du initYoga({ wasm }) übergibst. Die Anfrage ist fehlgeschlagen, hat einen Fehlerstatus zurückgegeben oder die Antwort war kein gültiges WebAssembly. Die Fehlermeldung nennt die URL und den vom Server gesendeten Content-Type. Die üblichen Ursachen sind ein Server, der die .wasm-URL mit einer HTML-Fallback-Seite beantwortet, und eine Content Security Policy ohne 'wasm-unsafe-eval' in script-src.

Lösung

Sorge dafür, dass die URL aus der Fehlermeldung die Datei mit Content-Type: application/wasm zurückgibt, damit sie während des Downloads kompiliert wird. Eine Rewrite-Regel, die für unbekannte Pfade index.html ausliefert, muss /assets/ ausnehmen. Erlaube WebAssembly in deiner Content Security Policy:

Content-Security-Policy: script-src 'self' 'wasm-unsafe-eval'; connect-src 'self'

Wenn du die Konsole selbst mountest und die Datei von einem anderen Ort auslieferst, rufe vor createConsoleRoot() die Funktion initYoga() mit ihrer URL, ihren Bytes oder einem kompilierten WebAssembly.Module auf. Nur der erste Aufruf lädt Yoga:

import { initYoga } from "@textjs/core";await initYoga({ wasm: "/yoga.wasm" });

Siehe WebAssembly.