问题标签 [wasm-pack]
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.
wasm-bindgen - 如何在 wasm-bindgen 中使用引用类型
首先,我是 rust 和 webassembly 的新手。我想将引用类型与 wasm-bindgen 一起使用,遵循 wasm-bindgen 书籍Support for Reference Types中的示例
我尝试使用引用类型标志构建我的代码
但我收到以下错误
错误:找到了预期之外的参数“--reference-types”,或者在此上下文中无效
我已经安装了 1.55 版的 rustc 和 0.10.1 版的 wasm-pack。
我错过了什么吗?
rust - Rust wasm 模块构建错误(x11-clipboard 依赖)
最近我知道了 Web 组装,并且在生锈的情况下搞砸了。最终我遇到了构建问题。我的 toml 文件看起来像这样
当我想.wasm
用命令构建文件时,wasm-pack build --target web
我得到一堆这样的错误
我设法通过注释掉依赖来构建 wasm 模块x11-clipboard
。我尝试使用依赖项构建此模块,x11-clipboard
但在我注释掉xcb
依赖项之前它也失败了。如果我添加x11
板条箱,它也会失败。有一段时间我认为libc
这可能是一个问题,但我没有问题构建具有这种依赖关系的模块。
有谁知道为什么某些依赖项会导致构建过程失败以及如何修复它?如果无法修复,有人可以解释我为什么吗?提前致谢!
reactjs - 在 CRACO 项目中使用基于 Rust 的 WASM 模块
我正在处理一个最初使用 Create React App (CRA) 创建的项目,由于需要处理一些 LESS 文件,我最终切换到使用 CRACO。我现在正在尝试集成一个单独的 WebAssembly 项目,该项目导出一个我想在 react 项目中使用的结构。我使用 wasm-bindgen 编写绑定,并使用 wasp-pack 将结果发布为 npm 模块(捆绑器构建)。这会产生一个我发布的 NPM 包。接下来,我按照本教程使用 CRACO 并从库中导入 wasm 代码。本质上,反应端的代码是相同的,但是我有一个应该包装的结构而不是一个函数。但是它没有按预期工作。运行时,出现以下错误:
我不确定是什么导致了这个特定的错误(无论是 webpack、craco、wasm 包装器中的一些问题,还是上述的某种组合)。如果有任何其他有用的信息,我很乐意提供。感谢所有的帮助!
rust - Rust wasm:什么时候在使用 wasm_bindgen(constructor) 注释的 Rust X::new() 上调用 JS new X() 是合法的?
给定以下(简化的)Rust 代码:
使用 编译wasm-pack
,此建议来自wasm-bindgen书:
前面的声明让我相信,在 Promise 解决之前,进行任何与 rust-wasm 相关的调用都是非法的。
这提出了一个问题:这些陈述中哪一个是正确的?
new MyClassJs()
任何时候(甚至在 Promise 解决之前)调用是否合法?- 仅在 Promise 解决后调用是否合法
new MyClassJs()
(但在任何地方,包括then
回调之外? new MyClassJs()
只在回调内部调用是否合法then
?
我尝试使用这些资源找到答案,但发现它们不包含我的问题的答案:
- https://rustwasm.github.io/docs/book/
- https://rustwasm.github.io/docs/wasm-pack/
- https://rustwasm.github.io/wasm-bindgen/
编辑:我目前在 webpack 4 上。
rust - 为 Rust 安装 wasm-pack 时出现 gcc 错误
我在尝试在我的机器上安装 rust-wasm 时遇到错误,它可能与 相关gcc
,是否有其他人遇到此问题,还是只有我一个人遇到此问题?我尝试在其他地方搜索它,但找不到任何东西!
罪魁祸首?
我知道这个问题与我的环境有关,我认为这gcc
是罪魁祸首。根据日志,发生错误的部分在这里:
TL;博士
我遇到了库bzip2-sys v0.1.11+1.0.8
试图构建的错误(可能与 GCC 相关)。
wasm-pack 版本:v0.10.2
rustc 版本:v1.56.1
gcc 版本:v6.3.0
webpack - 如何让 webpack 嵌入我的 *.wasm 以在 web worker 中使用?
我有一些 rust 代码可以使用wasm-pack
和编译为 Web 程序集wasm-bindgen
。我想从 web worklet/worker 调用这段代码。整个应用程序最终应该只是一个 *.js 文件,其他所有内容都内联。
这就是我想象的构建过程的样子:
- 用于
wasm-pack
将 rust 代码编译为 *.wasm 和 *.js 绑定(此步骤工作正常) - 用于
webpack
构建一个独立的 *.js 文件,我可以将其作为工作集/工作人员加载。*.wasm 必须包含在此文件中。(此步骤失败) - 再次使用
webpack
来构建我的最终应用程序/包,内联步骤 2 中的 worklet/worker 文件。(此步骤工作正常)
我的问题出在第 2 步:我无法webpack
将 *.wasm 内联到 worklet/worker 文件中。我在我的 webpack 配置中尝试了这个:
无论我做什么,webpack
总是会发出两个文件,一个worker.js
是我的 worklet/worker 脚本本身,另一个是vendor_my_package_name_wasm_js.js
只包含 *.wasm 及其绑定。显然,当worker.js
作为 web worker 加载时,它会失败 - 第二个文件无法从 worker 范围加载。
我的目标是包含所有内容,worker.js
而不是发出单独的文件。但是我该怎么做呢?
编辑:记录解决方案的步骤:
Webpack 原生 wasm 加载似乎不允许内联 wasm 文件。我们可以尝试使用常规的 raw-loader:
这会导致以下错误:
发生这种情况是因为仍然存在一个隐式默认规则。我们可以通过覆盖默认规则来禁用它,只考虑json
和js
文件:
现在我们终于将我们的 worker 捆绑到了一个 *.js 文件中!但是,在加载它时,我们最终会出现以下错误:
指向这段 webpack 生成的代码:
出于某种原因,webpack 试图支持动态加载东西(?)。我们可以将问题隔离到使用CLI 参数wasm-pack
时作为 javascript 绑定的一部分生成的这段代码:--target=web
显然,必须生成 URL 的可能性使得 webpack 依赖document
哪个在工作范围内加载工作脚本时不可用。取消注释该new URL()
部分会使document
引用从 webpack 输出中消失。
不知道从这里去哪里。编写我自己的 wasm-loader?我为此工作了一段时间,对 wasm 文件进行 base64 编码并将其内联为字符串 - 但随后我必须大幅更改使用者代码以手动异步加载 wasm。这意味着我不能再使用wasm-bindgen
绑定,因为它们依赖于URL
上面显示的部分(使用时--target=web
)或 webpack 5 的捆绑逻辑(使用时--target=bundler
),我无法从我自己的简单 wasm-loader 尝试中获得支持. 本质上,这意味着我必须提供自己的 JS 绑定,这很不方便。
一定有更好的方法——对吧?
python - wasmer-python 在读取多模块 WASM 时引发错误
我是 wasm 技术的新手,我正在尝试使用 Python 的 WebAssembly 运行时https://github.com/wasmerio/wasmer-python来读取 https://github.com/docknetwork/crypto-wasm 的 wasm文件。
问题是 wasmer-python 中可用的所有示例都读取了一个包含一个模块的 wasm 文件。在 crypto-wasm 中,我们有几个模块,我怀疑这是以下代码中的问题。我不确定 wasmer-python 是否支持这个 wasm 的孩子。
这是python代码:
然后wasm.wasm
file 是运行yard build
repo 命令时生成的文件 .https://github.com/docknetwork/crypto-wasm。
然后我收到以下错误:
任何人都知道可能是这个问题的根本原因吗?我在哪里可以找到有关如何阅读多模块 wasm 的示例?非常感谢任何输入。
非常感谢,扎克
rust - 错误:添加 console_error_panic_hook::set_once() 后,无法隐藏已定义的类 `Error`;
简单地添加console_error_panic_hook::set_once()
会导致错误:
是的,我确实有自己的Error
结构,但为什么使用这个函数会导致“影子”错误?
仅当我Error
使用[wasm_bindgen]
.
运行后出现错误wasm-pack build --target web