问题标签 [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.

0 投票
0 回答
106 浏览

wasm-bindgen - 如何在 wasm-bindgen 中使用引用类型

首先,我是 rust 和 webassembly 的新手。我想将引用类型与 wasm-bindgen 一起使用,遵循 wasm-bindgen 书籍Support for Reference Types中的示例

我尝试使用引用类型标志构建我的代码

但我收到以下错误

错误:找到了预期之外的参数“--reference-types”,或者在此上下文中无效

我已经安装了 1.55 版的 rustc 和 0.10.1 版的 wasm-pack。

我错过了什么吗?

0 投票
0 回答
77 浏览

rust - Rust wasm 模块构建错误(x11-clipboard 依赖)

最近我知道了 Web 组装,并且在生锈的情况下搞砸了。最终我遇到了构建问题。我的 toml 文件看起来像这样

当我想.wasm用命令构建文件时,wasm-pack build --target web我得到一堆这样的错误

我设法通过注释掉依赖来构建 wasm 模块x11-clipboard。我尝试使用依赖项构建此模块,x11-clipboard但在我注释掉xcb依赖项之前它也失败了。如果我添加x11板条箱,它也会失败。有一段时间我认为libc这可能是一个问题,但我没有问题构建具有这种依赖关系的模块。

有谁知道为什么某些依赖项会导致构建过程失败以及如何修复它?如果无法修复,有人可以解释我为什么吗?提前致谢!

0 投票
0 回答
36 浏览

reactjs - 在 CRACO 项目中使用基于 Rust 的 WASM 模块

我正在处理一个最初使用 Create React App (CRA) 创建的项目,由于需要处理一些 LESS 文件,我最终切换到使用 CRACO。我现在正在尝试集成一个单独的 WebAssembly 项目,该项目导出一个我想在 react 项目中使用的结构。我使用 wasm-bindgen 编写绑定,并使用 wasp-pack 将结果发布为 npm 模块(捆绑器构建)。这会产生一个我发布的 NPM 包。接下来,我按照本教程使用 CRACO 并从库中导入 wasm 代码。本质上,反应端的代码是相同的,但是我有一个应该包装的结构而不是一个函数。但是它没有按预期工作。运行时,出现以下错误:

我不确定是什么导致了这个特定的错误(无论是 webpack、craco、wasm 包装器中的一些问题,还是上述的某种组合)。如果有任何其他有用的信息,我很乐意提供。感谢所有的帮助!

0 投票
0 回答
38 浏览

rust - Rust wasm:什么时候在使用 wasm_bindgen(constructor) 注释的 Rust X::new() 上调用 JS new X() 是合法的?

给定以下(简化的)Rust 代码:

使用 编译wasm-pack,此建议来自wasm-bindgen书:

前面的声明让我相信,在 Promise 解决之前,进行任何与 rust-wasm 相关的调用都是非法的。

这提出了一个问题:这些陈述中哪一个是正确的?

  1. new MyClassJs()任何时候(甚至在 Promise 解决之前)调用是否合法?
  2. 仅在 Promise 解决后调用是否合法new MyClassJs()(但在任何地方,包括then回调之外?
  3. new MyClassJs()只在回调内部调用是否合法then

我尝试使用这些资源找到答案,但发现它们不包含我的问题的答案:

编辑:我目前在 webpack 4 上。

0 投票
0 回答
90 浏览

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

0 投票
0 回答
509 浏览

webpack - 如何让 webpack 嵌入我的 *.wasm 以在 web worker 中使用?

我有一些 rust 代码可以使用wasm-pack和编译为 Web 程序集wasm-bindgen。我想从 web worklet/worker 调用这段代码。整个应用程序最终应该只是一个 *.js 文件,其他所有内容都内联。

这就是我想象的构建过程的样子:

  1. 用于wasm-pack将 rust 代码编译为 *.wasm 和 *.js 绑定(此步骤工作正常)
  2. 用于webpack构建一个独立的 *.js 文件,我可以将其作为工作集/工作人员加载。*.wasm 必须包含在此文件中。(此步骤失败)
  3. 再次使用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:

这会导致以下错误:

发生这种情况是因为仍然存在一个隐式默认规则。我们可以通过覆盖默认规则来禁用它,只考虑jsonjs文件:

现在我们终于将我们的 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 绑定,这很不方便。

一定有更好的方法——对吧?

0 投票
0 回答
51 浏览

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.wasmfile 是运行yard buildrepo 命令时生成的文件 .https://github.com/docknetwork/crypto-wasm。

然后我收到以下错误:

任何人都知道可能是这个问题的根本原因吗?我在哪里可以找到有关如何阅读多模块 wasm 的示例?非常感谢任何输入。

非常感谢,扎克

0 投票
1 回答
38 浏览

rust - 错误:添加 console_error_panic_hook::set_once() 后,无法隐藏已定义的类 `Error`;

简单地添加console_error_panic_hook::set_once()会导致错误:

是的,我确实有自己的Error结构,但为什么使用这个函数会导致“影子”错误?

仅当我Error使用[wasm_bindgen].

运行后出现错误wasm-pack build --target web

再生产

版本