问题标签 [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.
webpack - webpack加载wasm模块内存时如何访问它
我试图跟随
如何从 WebAssembly 中的 Rust 返回字符串(或类似字符串)?
这允许访问 wasm 模块内的字符串数据。
我曾经wasm-pack build
构建过一个 RUST 模块,我可以访问导出的方法,但不能直接访问内存。
webpack 生成的 JavScript 有一个方法可以让我读取字符串
但它不会被导出,如果我将这个生成的 .js 文件破解为
我可以访问 RUST 代码返回的字符串。
如何配置 webpack 代码生成器以提供类似的访问权限,或者以其他方式公开模块的exports.memory
?
Webpack 似乎没有让我了解模块本身。我找不到加载.wasm
webpack 生成的文件的方法,WebAssembly.instantiateStreaming()
因为它似乎依赖于其他生成的文件。
node.js - 在 node.js 中重置 Wasm 内存
我有一个在 node.js 中运行的 Wasm 模块(使用 Rust/wasm-pack 编译)。该模块在正常条件下工作,但给定某些输入数据,它可能会耗尽内存。我想继续使用相同的 Wasm 模块处理后续数据集,但是在第一个 OOM 错误之后,该模块不再工作(无论输入数据如何都会引发异常)。
require()
在每次使用模块之前 我都尝试过重新做一次,包括清除require.cache
,但模块仍然无法运行。
是否有某种需要重置的 Wasm 模块的全局内存空间,或者是否有某种方法可以重新加载require
我丢失的模块?
rust - 如何确保正确的 HTML 元素从 JavaScript 传递到我的 Rust 函数?
如果我使用接受 a 的 wasm_bindgen 创建一个 Rust 函数,HtmlCanvasElement
我如何确保它在到达 Rust 端时失败?
JavaScript:
锈:
看起来我正在获取类型HtmlCanvasElement
,但如果我尝试将其用作HtmlCanvasElement
,它没有功能,因为我传递的是字符串而不是实际的画布元素。我希望它在设置时失败,而不是在以后尝试使用它时失败。
webpack - Webpack 不会捆绑使用 wasm-bindgen 生成的 npm 模块
我在 rust 中编写了一个小库,用于对复数进行一些计算。我使用 wasm-bindgen cli 生成了一个 wasm bin 和 js shim,发布了它,并尝试在一个小的 react 应用程序中使用它。对于我的生活,我无法让 webpack 捆绑这个东西。
我有一个异步拆分点,并且正在尝试使用 wasm-loader 我正在使用此配置从 webpack 获取“未检测到魔术头”。我也试过不指定加载器,在这种情况下我会出错:“模块解析失败:0x83 处的意外部分”,它告诉我可能需要一个合适的加载器。我不确定魔术头应该是什么,或者其他加载器应该研究什么。
这是我的 package.json 和 webpack 配置:
以及调用 npm 模块的 js 代码:
rust - rust-buildgen requestAnimationFrameLoop 无法在闭包内使用结构方法
我正在尝试创建一个 requestAnimationFrame 循环,它将调用game.render()
每一帧。我正在关注本教程 - https://rustwasm.github.io/wasm-bindgen/examples/request-animation-frame.html
但它给出了以下错误 -
如果我注释掉game.render()
它会编译。但我想保持一个将被更新以创建动画的状态。我做错了什么?为什么闭包不允许调用结构方法?
在此先感谢您的帮助。
rust - 如何通过 wasm-pack 将 Rust Wasm 应用程序与 libpq 链接?
我正在尝试使用 Wasm 数据库层创建 NodeJS 应用程序。我使用 Rust、Diesel 作为数据库驱动程序和wasm-pack
WebAssembly 编译器。
当我尝试使用 构建我的服务时wasm-pack
,尝试链接libpq
库失败。设置了PQ_LIB_DIR
环境变量,并且diesel-cli
没有任何问题,但是当我尝试编译我的服务时它失败并出现以下错误:
我该如何解决?
我的系统:
- 操作系统:Windows 10
- 锈:1.38.0
- wasm 包:0.8.1
- 柴油:1.4.0
- PostgreSQL : 12
rust - 当对象添加到向量时,Rust wasm_bindgen 对象在 JS 端变为 null
我有两个导出到 Javascript 的结构。我可以创建实例并在 JavaScript 中使用它们而不会出现任何错误,但是当我将实例推送到 Rust 端的向量中时,出现错误“未捕获的错误:传递给 rust 的空指针”
由于所有权已更改,JS 对象变为 null 是完全正常的,但我还需要保留我的 JavaScript 对象以更改 JavaScript 方面的内容。
是否有任何正确的方法来保持“vect”对象不为空并对更改开放?
我添加了一个工作示例。您可以在浏览器的控制台中看到错误。
锈代码
JavaScript 代码
rust - 如何摆脱 wasm_bindgen 的包装器结构中的生命周期
目前我有一些类似于以下的代码:
现在的问题是我必须摆脱它的生命周期,Foo
因为wasm_bindgen
不允许它。
直观地说,生命周期应该通过创建 struct 来强制执行Foo
。但是编译器要求我提供生命周期。
无论如何,我不知道如何做到这一点。有人可以帮助我吗?
javascript - 无效或意外的令牌“导入” - jest/babel/webpack
我有一个 rust 库,我正在尝试交叉编译并打包到一个 npm 脚本中。我一直在关注使用 wasm 包的过程。该过程构建了 es6 js,我编写了一些粗略的测试,然后决定尝试使用 jest 作为测试运行器,因为我在另一个项目中使用它几乎没有问题。
我在尝试运行测试时遇到了这个问题
我开玩笑说
开玩笑的调试配置输出
我的 jest.config.json
我的开发部门
.babelrc
我的测试很简单
我的 webpack.config.js
我正在尝试测试的输出 es6 的片段
我只能想象 jest 在运行时没有转换 js 代码,但我已经在相关配置中指定了代码的所有路径