TX032

بارگذاری ناموفق WebAssembly در Yoga

کنسول

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

علت بروز

تابع initYoga() کد WebAssembly مربوط به Yoga را از یک فایل .wasm در برنامه‌های Text.js (text dev، text build)، در بیلدهایی که شرط resolve با نام @textjs/client را تنظیم می‌کنند و زمانی که initYoga({ wasm }) را فراخوانی می‌کنید، بارگذاری می‌کند. درخواست ناموفق بوده، وضعیت خطا برگردانده یا پاسخ دریافتی WebAssembly معتبر نبوده است. پیام خطا، URL و مقدار Content-Type ارسالی سرور را مشخص می‌کند. علت‌های رایج، سروری است که به URL فایل .wasm با یک صفحهٔ HTML جایگزین پاسخ می‌دهد و سیاست امنیت محتوا که در بخش script-src آن مقدار 'wasm-unsafe-eval' وجود ندارد.

روش رفع

کاری کنید URL ذکرشده در خطا، فایل را با Content-Type: application/wasm برگرداند تا هم‌زمان با دانلود کامپایل شود. قاعدهٔ بازنویسی‌ای که برای مسیرهای ناشناخته فایل index.html را ارائه می‌کند، باید مسیر /assets/ را مستثنا کند. در سیاست امنیت محتوای خود، WebAssembly را مجاز کنید:

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

اگر خودتان کنسول را mount می‌کنید و فایل را از جای دیگری ارائه می‌دهید، پیش از فراخوانی createConsoleRoot()، تابع initYoga() را با URL فایل، بایت‌های آن یا یک WebAssembly.Module کامپایل‌شده فراخوانی کنید. فقط اولین فراخوانی Yoga را بارگذاری می‌کند:

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

به WebAssembly مراجعه کنید.