Я пытаюсь загрузить файл .wasm, используя api fetch в Chrome, и обслуживая html файл, используя экспресс. Но Chrome не позволяет мне загрузить файл:
'Uncaught (в обещании) TypeError: Не удалось выполнить' compile 'в' WebAssembly ': неверный тип MIME ответа. Ожидаемое приложение /wasm.
Вот мои файлы:
/public/index.html
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<script type="text/javascript">
WebAssembly.instantiateStreaming(fetch('http://localhost:3000/simple.wasm'))
.then(obj => {
console.log(obj.instance.exports.add(1, 2)); // "3"
});
</script>
</body>
</html>
Обслуживается экспрессом:
/index.js
const express = require('express')
express.static.mime.define({'application/wasm': ['wasm']})
var app = express();
app.use('/', express.static('public'));
app.listen(3000, function () {
console.log('Example app listening on port 3000!')
})
Могу ли я добавить новый тип MIME для выражения при обработке файла .wasm? Или позволить хрому принять это? Я понятия не имею, как это решить ^^
Смотрите: http://kripken.github.io/emscripten-site/docs/compiling/WebAssembly.html
Web server setup
To serve wasm in the most efficient way over the network, make sure your web server has the proper MIME time for .wasm files, which is application/wasm. That will allow streaming compilation, where the browser can start to compile code as it downloads.
In Apache, you can do this with
AddType application/wasm .wasm
Also make sure that gzip is enabled:
AddOutputFilterByType DEFLATE application/wasm
Спасибо всем!