wasm decoding failResult, когда приложение упаковано с электронным кузнечным изделием

Я пытаюсь упаковать электронное приложение (которое использует wasm) с помощью electronic-forge.

На данный момент (пока я борюсь с упаковкой!) Это немного больше, чем привет-мир, но он компилирует простую библиотеку ржавчины в wasm, затем я копирую файлы .js и .wasm в ./src/ и упаковываю как электронное приложение. .

Запуск с помощью команды «запуск электронной кузницы» работает отлично, но когда я упаковываю ее с помощью команды «electon-forge make» (в данном случае в DMG в Mac OS), а затем устанавливаю и запускаю ее, кажется, что она пытается загрузить неправильный файл .wasm (или он был изменен ...), поскольку я получаю следующие ошибки:

введите здесь описание изображения

В комплекте только один файл .wasm, и я проверил, что в .js есть ссылка на правильный файл.

Если я перейду к пакету .app в / Applications и перейду к упакованным исходным файлам, все будет правильно и так же, как мои исходные папки.

Проверка магического номера файла .wasm тоже кажется прекрасной.

hexdump ui-72b0082cbbe1a2b5.wasm |head -n 1 0000000 00 61 73 6d 01 00 00 00 01 86 01 13 60 02 7f 7f

Итак, я не знаю, какой файл он пытается загрузить как .wasm и почему магическое число неверно.

Любые идеи?


person Andrew Mackenzie    schedule 11.11.2017    source источник


Ответы (1)


Не уверен, что у вас все еще есть эта проблема, но какое-то время это меня ставило в тупик, поэтому я решил, что оставлю ответ следующему человеку. Короткий ответ, вам нужно добавить немного в конфигурационный файл json. Пример:

Конфигурация по умолчанию:

...
"config": {
   "forge": {
      "packagerConfig": { },
...

Фиксированная конфигурация:

...
"config": {
   "forge": {
      "packagerConfig": { "asar.unpack" : "yourFileHere.js" },
...

Насколько я могу судить, проблема исходит от электронного упаковщика и того, как он все сжимает в этот файл asar. Кажется, пытается обслужить сжатый файл, поэтому тип MIME неверен. Но даже когда я изменил код загрузки веб-сборки, чтобы использовать WebAssembly.instantiate вместо WebAssembly.instantiateStreaming (что позволяет избежать проверки MIME), у меня все еще остались проблемы с магическими числами ... это было ключом к тому, что проблема была в сжатии.

Вы также можете создавать каталоги, здесь информация о других параметрах упаковщика https://github.com/electron/electron-packager/blob/master/docs/api.md#asar

person PParsons    schedule 23.11.2019
comment
Спасибо, но весь опыт был настолько сложным и трудным, что я отказался от всего электронного подхода :-( - person Andrew Mackenzie; 24.11.2019