Загрузка модуля была заблокирована из-за недопустимого типа MIME («приложение / wasm»).

Я обслуживаю статический файловый сервер (через HTTP), который содержит данные, сгенерированные wasm-pack. Используя примеры из книги rustwasm, я добавил этот код на свою индексную HTML-страницу:

        <script type="module">
            import init from "./pkg/fstree_web.js";

            async function run() {
                await init();
            }

            run();
        </script>

Однако в Firefox я получаю сообщение об ошибке, указанное в заголовке:

модуль из «http://localhost:8000/pkg/fstree_web_bg.wasm» был заблокирован из-за запрещенный тип MIME («приложение / wasm»).

Я подозревал проблемы HTTPS или проблемы с локальным хостом, поэтому я дополнительно попробовал 127.0.0.1 и даже пробовал туннель https: //***.ngrok.io, но Firefox по-прежнему отклоняет загрузку модуля wasm с этим сообщением об ошибке.

Он ссылается на статью MDN о X-Content-Type-Options, но я не уверен, насколько это актуально. Мой сервер уже отправляет Content-Type: application/wasm.

Код JavaScript, сгенерированный wasm-pack, начинается так:

import { __cargo_web_snippet_72fc447820458c720c68d0d8e078ede631edd723 } from './snippets/stdweb-bb142200b065bd55/inline133.js';
import { __cargo_web_snippet_97495987af1720d8a9a923fa4683a7b683e3acd6 } from './snippets/stdweb-bb142200b065bd55/inline134.js';
import { __cargo_web_snippet_dc2fd915bd92f9e9c6a3bd15174f1414eee3dbaf } from './snippets/stdweb-bb142200b065bd55/inline135.js';
import { __cargo_web_snippet_1c30acb32a1994a07c75e804ae9855b43f191d63 } from './snippets/stdweb-bb142200b065bd55/inline136.js';
import { wasm_bindgen_initialize } from './snippets/stdweb-bb142200b065bd55/inline293.js';
import * as wasm from './fstree_web_bg.wasm';

Firefox хочет, чтобы я отправлял * .wasm как application/javascript? Или что не так?


person SOFe    schedule 13.10.2019    source источник
comment
Эй, если вы разместите предыдущую ссылку в комментарии, я могу сказать вам, был ли там ответ или нет.   -  person Patrick Roberts    schedule 13.10.2019
comment
stackoverflow.com/questions/58311656/   -  person SOFe    schedule 13.10.2019
comment
Да, никто не ответил. Он был опубликован 9 октября и вчера удален без комментариев и ответов.   -  person Patrick Roberts    schedule 13.10.2019


Ответы (1)


Импорт модулей WebAssembly еще не стандартизирован. Вы должны установить для --target аргумента wasm-pack значение web, чтобы сгенерировать JavaScript для использования в браузере.

person The Wayward Developer    schedule 14.10.2019
comment
Я уже сделал это, но он сгенерировал приведенный выше JavaScript. Библиотеки, которые я использую, например stdweb, используют фрагменты. Может ли это быть связано? - person SOFe; 14.10.2019
comment
Это случайно не расширение или обычная веб-страница? - person The Wayward Developer; 14.10.2019
comment
Сомневаться. Я воспроизвожу ту же проблему на Chrome без каких-либо расширений - person SOFe; 14.10.2019
comment
Я спрашивал, разрабатываете ли вы расширение, но полагаю, что это не так. - person The Wayward Developer; 14.10.2019
comment
Попробуйте заменить строку импорта wasm прямым экземпляром модуля (developer.mozilla. org / en-US / docs / WebAssembly /). - person The Wayward Developer; 14.10.2019
comment
Я попробую. Следует ли считать это ошибкой для wasm-pack? - person SOFe; 15.10.2019
comment
Да ладно, я допустил опечатку в своей инструментальной цепочке, из-за которой он не смог передать --target web в wasm-pack. Спасибо! - person SOFe; 15.10.2019