问题标签 [wasm-bindgen]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
215 浏览

webpack - webpack加载wasm模块内存时如何访问它

我试图跟随

如何从 WebAssembly 中的 Rust 返回字符串(或类似字符串)?

这允许访问 wasm 模块内的字符串数据。

我曾经wasm-pack build构建过一个 RUST 模块,我可以访问导出的方法,但不能直接访问内存。

webpack 生成的 JavScript 有一个方法可以让我读取字符串

但它不会被导出,如果我将这个生成的 .js 文件破解为

我可以访问 RUST 代码返回的字符串。

如何配置 webpack 代码生成器以提供类似的访问权限,或者以其他方式公开模块的exports.memory

Webpack 似乎没有让我了解模块本身。我找不到加载.wasmwebpack 生成的文件的方法,WebAssembly.instantiateStreaming()因为它似乎依赖于其他生成的文件。

0 投票
0 回答
306 浏览

node.js - 在 node.js 中重置 Wasm 内存

我有一个在 node.js 中运行的 Wasm 模块(使用 Rust/wasm-pack 编译)。该模块在正常条件下工作,但给定某些输入数据,它可能会耗尽内存。我想继续使用相同的 Wasm 模块处理后续数据集,但是在第一个 OOM 错误之后,该模块不再工作(无论输入数据如何都会引发异常)。

require()在每次使用模块之前 我都尝试过重新做一次,包括清除require.cache,但模块仍然无法运行。

是否有某种需要重置的 Wasm 模块的全局内存空间,或者是否有某种方法可以重新加载require我丢失的模块?

0 投票
1 回答
247 浏览

rust - 如何确保正确的 HTML 元素从 JavaScript 传递到我的 Rust 函数?

如果我使用接受 a 的 wasm_bindgen 创建一个 Rust 函数,HtmlCanvasElement我如何确保它在到达 Rust 端时失败?

JavaScript:

锈:

看起来我正在获取类型HtmlCanvasElement,但如果我尝试将其用作HtmlCanvasElement,它没有功能,因为我传递的是字符串而不是实际的画布元素。我希望它在设置时失败,而不是在以后尝试使用它时失败。

0 投票
0 回答
978 浏览

webpack - Webpack 不会捆绑使用 wasm-bindgen 生成的 npm 模块

我在 rust 中编写了一个小库,用于对复数进行一些计算。我使用 wasm-bindgen cli 生成了一个 wasm bin 和 js shim,发布了它,并尝试在一个小的 react 应用程序中使用它。对于我的生活,我无法让 webpack 捆绑这个东西。

我有一个异步拆分点,并且正在尝试使用 wasm-loader 我正在使用此配置从 webpack 获取“未检测到魔术头”。我也试过不指定加载器,在这种情况下我会出错:“模块解析失败:0x83 处的意外部分”,它告诉我可能需要一个合适的加载器。我不确定魔术头应该是什么,或者其他加载器应该研究什么。

这是我的 package.json 和 webpack 配置:

以及调用 npm 模块的 js 代码:

npm 模块是https://www.npmjs.com/package/complex-julia-funcs

0 投票
2 回答
217 浏览

rust - rust-buildgen requestAnimationFrameLoop 无法在闭包内使用结构方法

我正在尝试创建一个 requestAnimationFrame 循环,它将调用game.render()每一帧。我正在关注本教程 - https://rustwasm.github.io/wasm-bindgen/examples/request-animation-frame.html

但它给出了以下错误 -

如果我注释掉game.render()它会编译。但我想保持一个将被更新以创建动画的状态。我做错了什么?为什么闭包不允许调用结构方法?

在此先感谢您的帮助。

0 投票
2 回答
655 浏览

rust - 如何通过 wasm-pack 将 Rust Wasm 应用程序与 libpq 链接?

我正在尝试使用 Wasm 数据库层创建 NodeJS 应用程序。我使用 Rust、Diesel 作为数据库驱动程序和wasm-packWebAssembly 编译器。

当我尝试使用 构建我的服务时wasm-pack,尝试链接libpq库失败。设置了PQ_LIB_DIR环境变量,并且diesel-cli没有任何问题,但是当我尝试编译我的服务时它失败并出现以下错误:

我该如何解决?

我的系统:

  • 操作系统:Windows 10
  • :1.38.0
  • wasm 包:0.8.1
  • 柴油:1.4.0
  • PostgreSQL : 12
0 投票
1 回答
724 浏览

rust - 当对象添加到向量时,Rust wasm_bindgen 对象在 JS 端变为 null

我有两个导出到 Javascript 的结构。我可以创建实例并在 JavaScript 中使用它们而不会出现任何错误,但是当我将实例推送到 Rust 端的向量中时,出现错误“未捕获的错误:传递给 rust 的空指针”

由于所有权已更改,JS 对象变为 null 是完全正常的,但我还需要保留我的 JavaScript 对象以更改 JavaScript 方面的内容。

是否有任何正确的方法来保持“vect”对象不为空并对更改开放?

我添加了一个工作示例。您可以在浏览器的控制台中看到错误。

锈代码

JavaScript 代码

0 投票
0 回答
395 浏览

rust - 如何摆脱 wasm_bindgen 的包装器结构中的生命周期

目前我有一些类似于以下的代码:

现在的问题是我必须摆脱它的生命周期,Foo因为wasm_bindgen不允许它。

直观地说,生命周期应该通过创建 struct 来强制执行Foo。但是编译器要求我提供生命周期。

无论如何,我不知道如何做到这一点。有人可以帮助我吗?

0 投票
1 回答
122 浏览

javascript - 在浏览器的“网络”选项卡下两次下载相同的文件(JS 文件中引用的 WASM 文件)

WASM 文件被下载了两次,无论如何我们可以避免多次下载同一个文件。

这里 ERT_Facial_Alignment_asm.js 指的是 ERT_Facial_Alignment_asm.wasm 文件,但是 wasm 下载了两次。

请在此处找到附件。

在此处输入图像描述

0 投票
1 回答
618 浏览

javascript - 无效或意外的令牌“导入” - jest/babel/webpack

我有一个 rust 库,我正在尝试交叉编译并打包到一个 npm 脚本中。我一直在关注使用 wasm 包的过程。该过程构建了 es6 js,我编写了一些粗略的测试,然后决定尝试使用 jest 作为测试运行器,因为我在另一个项目中使用它几乎没有问题。

我在尝试运行测试时遇到了这个问题

我开玩笑说

开玩笑的调试配置输出

我的 jest.config.json

我的开发部门

.babelrc

我的测试很简单

我的 webpack.config.js

我正在尝试测试的输出 es6 的片段

我只能想象 jest 在运行时没有转换 js 代码,但我已经在相关配置中指定了代码的所有路径