Как импортировать wasm в веб-работников с помощью веб-пакета? - PullRequest
0 голосов
/ 02 июля 2018

возможно ли с помощью веб-пакета импортировать wasm в рабочих? В моем обычном коде js я могу импортировать wasm так:

import('../wasm/hello_world.wasm').then(module => {
    console.log(module.add_one(9))
})

тот же код не работает внутри рабочего. Возвращает следующее сообщение об ошибке:

Uncaught TypeError: Cannot read property './src/wasm/hello_world.wasm' of undefined

Мой конфиг веб-пакета представляет собой комбинацию примера работника веб-пакета и wasm.

1 Ответ

0 голосов
/ 21 апреля 2019

Исходя из исходного вопроса и комментария, похоже, что есть интерес к решению этого вопроса как для WASM, составленной на C / Emscripten, так и на Rust.

Я нашел следующую статью, которая очень хорошо объясняет, как добиться результатов для генерируемого Emscripten wasm здесь:

https://medium.com/@c.gerard.gallant/webassembly-web-workers-f2ba637c3e4a

Что касается Rust, я собирался придумать собственное решение для этого и предоставить репозиторий github, чтобы сопровождать мой ответ, но в ходе своего исследования я обнаружил, что этот разработчик уже довольно хорошо и любезно решил проблему предоставил нам готовый шаблон.

Спасибо, Виктор Гавриш!

https://github.com/VictorGavrish/rust-wasm-worker-template

Шаги в README.md немного устарели. Я смог собрать и запустить проект, выполнив следующие действия:

локально клонировать репо и выполнить:

cd rust-wasm-worker-template/www
npm install
npm run build
npm run start

Как только веб-пакет завершит сборку всего, сайт разработчика будет доступен по URL, указанному на консоли.

Важные вещи, которые следует помнить, как правило, это ограничения веб-работников. Прямого доступа к dom или консоли нет, вы должны обрабатывать передачу сообщений от работника в основной поток и затем выводить на консоль. Я упомянул это специально, потому что ОП использовал пример, который называется console.log ...

...