TypeError:无法在“WebAssembly”上执行“编译”:响应 MIME 类型不正确。预期的“应用程序/wasm”

2024-01-19

我正在尝试使用 Chrome 上的 fetch api 加载 .wasm 文件,并使用 express 提供 html 文件。但 chrome 不允许我加载该文件:

'未捕获(承诺中)类型错误:无法在'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!')
})

在提供 .wasm 文件时,我可以添加新的 mime 类型来表达吗? 或者让chrome接受它? 我不知道如何解决它^^

See: http://kripken.github.io/emscripten-site/docs/compiling/WebAssembly.html 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

谢谢大家!


一种可能的解决方法是使用instantiate()代替instantiateStreaming(),因为前者不关心 MIME 类型(而后者does https://www.w3.org/TR/wasm-web-api-1/#streaming-modules)。使用instantiate():

async function fetchAndInstantiate() {
    const response = await fetch("http://localhost:3000/simple.wasm");
    const buffer = await response.arrayBuffer();
    const obj = await WebAssembly.instantiate(buffer);
    console.log(obj.instance.exports.add(1, 2));  // "3"
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

TypeError:无法在“WebAssembly”上执行“编译”:响应 MIME 类型不正确。预期的“应用程序/wasm” 的相关文章

随机推荐

  • 如何使用列表(或元组)作为字符串格式化值

    假设这个变量 s Python rocks x s s s 0 s 1 现在我想替换更长的列表 并分别添加所有列表值 例如 s 0 s 1 s n 似乎不正确 引用自文档 给定格式 值 如果格式 需要一个参数 值可以 是单个非元组对象 4
  • 如何在 F# 中的集群配置中创建参与者

    我正在创建一个示例Akka Cluster具有三个节点 A B 和 C 其中 A 是灯塔 到目前为止 从日志来看 当没有参与者或参与者是本地的 使用创建的 时 集群工作正常spawn and spawnOpt 我想从 B 创建一个 acto
  • TextMate:注释行快捷方式不再起作用(我的瑞士布局上的 Cmd-/ 或 Cmd-Shift-7)

    一段时间以来 我在 TextMate 中遇到了一种非常奇怪的行为 I had troubles to use the keyboard shortcut for commenting a line which is Cmd or on my
  • 如何在 Swift 中为 IOS 生成 RSA 非对称密钥对?

    我需要一种在 Swift 中生成 RSA 非对称密钥对的方法 我不需要将它存储在钥匙串或任何东西中 我只需要生成一个密钥对并将两个密钥放入字符串变量中 这些密钥确实需要与另一端的 PHP 兼容 我将使用对称加密来保护私钥并将其存储在手机上
  • isset 具有可变数组键数

    该数组是多维的 并且具有可变数量的子键 例如 arr a b c X 在这种情况下为3 我想创建一个函数 它接受一个像这样的字符串a b c作为参数并检查数组中是否包含该键 然后取消设置它 unset arr a b c 如果我给它a b那
  • PySpark UDF 优化挑战

    我正在尝试优化下面的代码 当运行 1000 行数据时 大约需要 12 分钟才能完成 我们的用例需要数据大小约为 25K 50K 行 这将使此实现完全不可行 import pyspark sql types as Types import n
  • 对话框活动还会在后台恢复其他活动

    这就是场景 我的应用程序中有 2 个活动 以及一个当我单击应用程序创建的通知时启动的对话框活动 问题是 当我单击通知时 如果按主页按钮停止 则仅应显示对话框 而不应显示应用程序的其他活动 当我通过按后退按钮关闭应用程序时 对话框活动会显示对
  • 检查用户是否是 C 中的 root?

    如何验证用户是否是root 通常测试用户是否为 root 是错误的 POSIX 甚至不需要 root 用户 而是将其留给实现来确定权限如何工作 代码如 if i am root do privileged op else print err
  • PHP 字符串转十六进制

    我有一个这样的字符串 0 9A Za z 如何转换为以下形式 133 x30 55 x39 101 x2d 132 x61 55 x7a 134 x2b 57 x3d 135 x2a 有什么功能吗 function strtohex str
  • 如何对 CopyOnWriteArrayList 进行排序

    我想排序CopyOnWriteArrayList 但是当我尝试运行以下代码时 它正在投掷unsorted operation exception public class CopyOnWriteArrayListExample public
  • PHP 查找字符串中所有出现的子字符串

    我需要解析 HTML 文档并查找所有出现的字符串asdf in it 我目前已将 HTML 加载到字符串变量中 我只想要字符位置 这样我就可以循环列表以在字符串后面返回一些数据 The strpos函数仅返回first发生 回国怎么样all
  • 如何检测向量中的空值

    检测向量中的空值的最佳方法是什么 如果我有下面的向量并且想知道第四个位置为空 我该怎么做 vx lt c 1 2 3 NULL 5 is null 仅返回FALSE is null vx 1 FALSE 我想得到 FALSE FALSE F
  • 游戏中心组

    我有一款带有 Game Center 排行榜的 iOS 游戏 我几个月前发布了这款游戏 现在正在开发 OSX 版本 我想为两个版本的游戏使用相同的排行榜 这意味着我需要创建一个 Game Center 组 问题是 当您将排行榜 ID 移动到
  • 判断Android应用是否是第一次使用

    我目前正在开发一个 Android 应用程序 我需要在应用程序第一次启动时做一些事情 即代码仅在程序第一次启动时运行 您可以使用共享首选项以确定这是否是应用程序的 第一次 启动 只需使用一个布尔变量 my first time 并将其值更改
  • 流星js如何从服务器将文件写入磁盘

    我正在编写一个流星包 myPackage 它需要使用 Npm FileSystem 和 Pah 模块将文件写入磁盘 该文件最终应位于 example app packages myPackage auto generated myFile
  • 打印数组显示错误的输出

    这段代码有什么问题 我得到了错误的输出 我不知道出了什么问题 希望您能帮助我 public class Main public static void main String args int data 11 22 33 55 22 88
  • 正则表达式 匹配正则表达式

    是否可以写一个与正则表达式匹配的正则表达式 有人有例子吗 如果存在一些理论上的障碍 是否有人知道至少可以匹配最常见的正则表达式模式的正则表达式 正则表达式不是正则语言 因此不能用正则表达式来描述 Update 更有用的实用答案 您无法使用任
  • 无法绑定到“数据”,因为它不是“画布”的已知属性

    我正在尝试使用 ng2 charts 并遇到错误 提示我使用的元素不正确 我在这个网站上尝试了一些答案 但没有成功 NG2 Charts 无法绑定到 数据集 因为它不是 画布 的已知属性 https stackoverflow com qu
  • 无法在 elastic beanstalk cli 中查看日志

    我想在命令行中查看弹性 beanstalk 环境的日志 为此我正在执行以下操作 eb logs cloudwatch logs enable cloudwatch log source instance Humboialpha2021 en
  • TypeError:无法在“WebAssembly”上执行“编译”:响应 MIME 类型不正确。预期的“应用程序/wasm”

    我正在尝试使用 Chrome 上的 fetch api 加载 wasm 文件 并使用 express 提供 html 文件 但 chrome 不允许我加载该文件 未捕获 承诺中 类型错误 无法在 WebAssembly 上执行 编译 响应M