3 Réponses :
Comme Shepmaster m'a aidé à comprendre dans les commentaires, le type MIME du fichier .wasm est défini sur application / octet-stream
lorsque le navigateur s'attend à ce qu'il s'agisse de application / wasm
.
J'utilise un simple express serveur pour héberger mes fichiers. Express peut être configuré pour utiliser le type MIME correct avec une seule ligne.
var express = require('express'); var app = express(); // Set the MIME type explicitly express.static.mime.define({'application/wasm': ['wasm']}); app.use(express.static('./dist')); app.listen(3000);
Selon ce problème , express gérera correctement les fichiers .wasm après la version 4.17. Il fonctionne correctement dans le serveur de développement Webpack car ils ont implémenté leur propre solution de contournement pendant qu'ils attendez le correctif dans express.
J'ai eu un problème similaire ("La réponse a un type MIME non pris en charge") avec Flask. Le problème était que je n'avais pas d'itinéraire séparé vers le fichier .wasm
. Par exemple:
@app.route('/path/to/file.wasm') def wasm_file(): return send_file('/path/to/file.wasm', mimetype = 'application/wasm');
Ce n'est pas la réponse à cette question, mais c'est un indice pour d'autres personnes qui ont un problème similaire.
Tout le mérite revient à l'utilisateur de la chaîne Discord Rust @Pauan
J'ai également rencontré ce problème, ce qui m'a amené à modifier mon fichier .htaccess (j'utilise Apache pour héberger mon serveur local) pour inclure les éléments suivants:
Application AddType / wasm wasm
Si l'erreur persiste et que vous obtenez cette erreur en utilisant WebAssembly.instantiateStreaming
, cette question connexe peut avoir une explication et une solution de contournement: WebAssembly InstantiateStreaming Mauvais type MIME
et hébergez directement les fichiers générés - comment les hébergez-vous? Regardez le type MIME des fichiers dans l'inspecteur de réseau de votre navigateur dans les deux cas; ils diffèrent vraisemblablement. Ensuite, découvrez pourquoi ils ne correspondent pas. Ensuite, découvrez comment les faire correspondre.
Pour la façon dont je les héberge, j'ai essayé à la fois un serveur simple
express.js
pour héberger statiquement le répertoire vers lequel le webpack exporte, ainsi que d'accéder aux fichiers directement viafile: /// < / code>. J'obtiens la même erreur dans les deux cas.
Pour l'inspecteur de réseau, tout semble avoir réussi. Je ne sais pas exactement comment fonctionne Webpack, mais en réalité, il n'y a pas de fichiers
index.js
oubootstrap.js
. Il n'y a quebundle.js
,1.bundle.js
et un fichier.module.wasm
au nom apparemment aléatoire. Tous montrent qu'ils ont été acquis avec succès.Je m'attendrais à ce que le transfert réseau se passe bien. Que disent les en-têtes de ces fichiers que les types MIME sont dans les cas où cela fonctionne et non?
Pour
.js
, le type de contenu estapplication / javascript
, et pour le fichiermodule.wasm
c'estapplication / octet-stream
.J'ai également trouvé que le chrome donne une erreur légèrement plus détaillée:
TypeError: Impossible d'exécuter "compile" sur "WebAssembly": Type MIME de réponse incorrect. "Application / wasm" attendu
Je pense que cela peut suffire pour m'amener à la solution. Je donnerai une mise à jour si je peux faire fonctionner les choses à partir d'ici.