Компиляция модуля Wasm с уровнями оптимизации 02 и 03 для загрузки в AudioWorlet?

Я пытаюсь скомпилировать.wasmmodule.js с дополнительной оптимизацией для работы в AudioWorklet.

Я использую файл.post.js для добавления "модуля экспорта по умолчанию" к скомпилированному Wasm, используя флаг компиляции --post-js. Это хорошо работает с оптимизацией 01, которая является текущей конфигурацией компиляции, используемой в примерах шаблонов проектирования рабочихлетов.

$(EMSCR) $(CFLAGS) --post-js $(POST_JS) -o $(OUTPUT) $(SRC_EM) $(SRC) 

CFLAGS=--bind -O1\
-s WASM=1 \
-s BINARYEN_ASYNC_COMPILATION=0 \
-s SINGLE_FILE=1 \
-s ALLOW_MEMORY_GROWTH=1 \
-s ABORTING_MALLOC=0 \
-s TOTAL_MEMORY=128Mb

У меня возникают проблемы с компиляцией с флагами оптимизации 02 и 03, потому что мне нужно загрузить Wasm с экспортом по умолчанию.

Если я прокомментирую экспорт --post.js, компиляция отлично работает с уровнем оптимизации 02 или 03. Однако тогда мы не сможем загрузить Wasm в рабочий лист, за исключением:

Например, "Ошибка при загрузке рабочеголета: SyntaxError: запрошенный модуль '../../build/m.wasmmodule.js' не предоставляет экспорт с именем 'default

Я пробовал разные комбинации, но не смог с этим справиться.

Есть идеи, есть ли другая конфигурация, которую я мог бы попробовать?

Большое спасибо

2 ответа

Если вы используете синтаксис ESM JavaScript import MyModule from './MyModule.js'попробуйте использовать эти флаги Emscripten:

-s EXPORT_ES6=1 \
-s MODULARIZE=1 \

У меня была такая же проблема, и я исправил ее, используя --extern-post-js вместо --post-js, который добавляет экспорт после завершения всей остальной работы компилятора, включая оптимизацию.

Другие вопросы по тегам