Мне не удается загрузить простую функцию WASM, которая суммирует два числа, внутри моего веб-воркера.
Я попробовал это в своем основном/индексном скрипте, который работает нормально. Однако перемещение кода в веб-воркер нарушает код. Похоже, что код sum() не выполняется внутри моего веб-воркера. Однако я не получаю никаких полезных журналов или сообщений об ошибках для дальнейшей отладки кода. Для лучшего понимания вот мой пример-репозиторий
Например, запуск кода Vite показывает мне следующие журналы:
[vite] connecting... client.ts:19:8
Message posted to worker with numbers 1 and 2. main.ts:13:10
[vite] connected. client.ts:175:14
Я бы ожидал, что здесь будет больше строк журнала, как только будет выполнен postMessage() в веб-воркере. Кажется, что веб-воркер останавливается при вызове модуля wasm.
Есть идеи? Спасибо!
Обновлять:
Кажется, проблема со временем (по крайней мере, для плагина Vite). Установка точки останова в основном скрипте дает мне все желаемые выходные данные консоли:
Message posted to worker with numbers 1 and 2.
worker.ts:4 Worker is calculating with data... {number1: 1, number2: 2}
main.ts:20 Message received, sum is: 3
Однако не похоже, что это исправляет модуль веб-пакета. Кроме того, я не знаю, почему это происходит и как это исправить без точек останова...


Думаю, я исправил проблему. Импорт был проблемой.
Использование динамического импорта вместо статического импорта работает для меня:
onmessage = (msg: MessageEvent<{ number1: number; number2: number }>) => {
import("wasm-sum").then((wasm) => {
console.info("Worker is calculating with data...", msg.data);
const sum = wasm.sum(msg.data.number1, msg.data.number2);
postMessage(sum);
});
};
Я обновил свой репозиторий примеров.
В качестве альтернативы мне следовало использовать модуль веб-работника вместо классического...
Нет идей, что мне стоит посмотреть?