在 node.js 中运行 .wasm 文件

2023-11-27

我读过很多关于在 Node.js 中运行 wasm 文件的文章。每当我测试代码时,它都会抛出此错误

[TypeError: WebAssembly.instantiate(): Import #0 module="wasi_snapshot_preview1" 错误:模块不是对象或函数]

然后它在结果中不显示任何内容。我正在使用这段代码:

const sp = {
  env: {
    memoryBase: 0,
    tableBase: 0,
    memory: new WebAssembly.Memory({
      initial: 256
    }),
    table: new WebAssembly.Table({
      initial: 0,
      element: 'anyfunc'
    })
  },
  imports: {
    imported_func: arg => {
      console.log(arg);
    }
  }
}

const fs = require('fs')
, wasm = WebAssembly.instantiate(new Uint8Array(fs.readFileSync('./test.wasm')), sp)
.then(result => console.log(result));

这段代码引发了上述错误。

我做错了什么吗?

解决方案:

我的代码没有任何问题,而是我编译代码的方式有问题。而不是使用

em++ test.cpp -o test.wasm

我应该使用:

em++ -O1 test.cpp -o test.wasm -s WASM=1

Change test.wasm to test.js应该也有效:

em++ -O1 test.cpp -o test.js -s WASM=1

使用 .wasm 作为输出类型或-s STANDALONE_WASM需要一个运行时wasi_snapshot_preview1支持。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 node.js 中运行 .wasm 文件 的相关文章

随机推荐

  • Python-docx - 如何更改表格字体大小?

    table document add table rows 1 cols 1 hdr cells table rows 0 cells hdr cells 0 text Qty 我必须更改一行一列表格中文本 数量 的字体大小 我该怎么做 您
  • 依赖注入和单例设计模式

    我们如何确定何时使用依赖注入或单例模式 我在很多网站上读过 他们说 使用依赖注入而不是单例模式 但我不确定我是否完全同意他们的观点 对于我的中小型项目 我肯定会直接使用单例模式 例如记录器 我可以用Logger GetInstance Lo
  • 在 Python 中迭代一系列日期

    我有以下代码可以做到这一点 但我怎样才能做得更好呢 现在我认为它比嵌套循环更好 但是当你在列表理解中有一个生成器时 它开始变得 Perl one linerish day count end date start date days 1 f
  • 如何使用Spring 3.x开发https站点?

    我是基于 Spring 的 Web 开发的新手 我们的网站是基于 Spring 的 目前是基于 http 的 所以相当不安全 由于该网站尚未上线 我们也通过正常的 JSON 请求向服务器发送登录名 密码 并且主要关注 JSP UI 设计 S
  • 选择不使用表格的两个日期之间的所有日期(生成日期列表)

    有没有一种方法可以在不使用任何 MySQL 表的情况下获取两个日期之间的所有日期 就像是 SELECT date BETWEEN 2012 02 10 AND 2012 02 15 这会导致这样的结果 out put date list 2
  • 设计邀请批量邀请 - Ruby on Rails

    我正在尝试使用 Devise invitable 来一次添加多个用户 基本上 当有人创建帐户时 他们要做的第一件事就是使用可邀请的表单添加一堆用户 只是不确定如何复制表单中的字段并让他们为每个条目发送创建请求 提前致谢 我就是这样做的 提供
  • GROUP BY 由间隙分隔的连续日期

    假设你 在 Postgres 9 1 中 有一个像这样的表 date value 其中有一些间隙 我的意思是 并非 min date 和 max date 之间的每个可能日期都有它的行 我的问题是如何聚合这些数据 以便单独处理每个一致的组
  • 在基于 Debian 的系统上如何找到字体所对应的 Unicode 代码点?

    从基于 Debian 的系统上的脚本语言 例如 Python 或 Ruby 我想找到以下之一 特定字体具有字形的所有 Unicode 代码点 具有特定 Unicode 代码点字形的所有字体 显然 1 或 2 可以从另一个派生 所以无论哪个更
  • 从 C# 中的 List 中删除重复项

    有人有一种在 C 中对通用列表进行重复数据删除的快速方法吗 如果您使用 Net 3 则可以使用 Linq List
  • 如何在 JavaScript 中处理 ctrl+arrow ?

    I ve noticed an problem when trying to catch keyboard shortcut CTRL an arrow I ve handled keydown event Now when I hold
  • 拼接微芯片的显微镜图像

    因此 我正在尝试拼接微芯片显微镜拍摄的图像 但很难将所有特征对齐 我已经在两个相邻图像之间有 50 的重叠 但即使如此 它也并不总是很合适 我使用 SURF 和 OpenCV 来提取关键点并找到单应矩阵 但尽管如此 这还远远不是一个可以接受
  • 如何在我的 iPhone 应用程序中包含字体?

    我已经看过这个帖子了 我可以在 iPhone 应用程序中嵌入自定义字体吗 这很有帮助 但我想简单地通过以下方式加载字体 UIFont font UIFont fontWithName Harrowprint size 20 有些人报告说这是
  • 为什么在 JavaScript 中,'3 instanceof Number' == false,但 '3..method()' 会调用 Number.prototype.method?

    鉴于字面数字严格来说不是一个实例Number 为什么我可以调用原型方法Number or String or Boolean 对应文字对象上的对象 这是跨浏览器的标准行为吗 当这种情况发生时到底发生了什么 我怀疑它在调用方法之前将文字强制转
  • 如何多次执行存储过程

    我有一个存储过程 我像这样执行 exec sp storedProc 123 ME 333 NULL 我需要指定 400 个不同的值 如何同时执行具有不同值的存储过程 您可以尝试使用 CURSORS 来完成此操作 DECLARE param
  • 如何从Instagram公共访问API获取视频?

    我知道这个 api 可以获取图像 但是视频呢 https www instagram com username a 1 我能够获取视频的缩略图 但无法获取源或网址本身 当您进行上述 API 调用时 它将返回code在里面 看起来像这样 BW
  • 鼠标移动时淡入

    如何使用 JavaScript 在第一次鼠标移动时淡入 div 内容 例如在 google com 上 我不想让它再次消失 Code 查看实际效果 attach event handler document body onmousemove
  • 使用configurationmanager从多个web.config文件中读取

    背景 我有一些数据存储在大约 100 个 Web 应用程序的 web config 文件中 这些数据正在逐渐转移到数据库中 网页将显示 web config 数据 直到有人单击 编辑 链接 在这种情况下 他们将被重定向到一个网页 该网页将允
  • System.ArgumentException:复杂 DataBinding 接受 IList 或 IListSource 作为数据源

    我使用下面的 C 代码来填充 WinForms 列表框 但是我想隐藏所有系统文件夹 例如 RecyclingBin 但它给了我以下错误 System ArgumentException 复杂 DataBinding 接受 IList 或 I
  • 使用 vba 取消选择数据透视表中的所有项目

    有人可以快速解释如何取消选择新创建的数据透视表中的所有项目 以便我可以返回并仅选择一个或两个项目吗 我尝试了以下方法 PivotItems Select All Visible False Thanks 这可能是最接近您想要的 Dim i
  • 在 node.js 中运行 .wasm 文件

    我读过很多关于在 Node js 中运行 wasm 文件的文章 每当我测试代码时 它都会抛出此错误 TypeError WebAssembly instantiate Import 0 module wasi snapshot previe