问题标签 [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 投票
1 回答
3810 浏览

javascript - 由于不允许的 MIME 类型(“application/wasm”),加载模块被阻止

我提供一个静态文件服务器(通过 HTTP),其中包含由wasm-pack. 使用 rustwasm 书中的示例,我将此代码添加到我的索引 HTML 页面中:

但是,在 Firefox 上,我收到标题中所示的错误消息:

来自“<a href="http://localhost:8000/pkg/fstree_web_bg.wasm" rel="noreferrer">http://localhost:8000/pkg/fstree_web_bg.wasm”的模块由于不允许的 MIME 类型而被阻止(“应用程序/wasm”)。

我怀疑 HTTPS 问题或 localhost 问题,所以我另外尝试127.0.0.1了,甚至尝试了 https://***.ngrok.io 隧道,Firefox 仍然拒绝加载带有此错误消息的 wasm 模块。

它链接到关于 X-Content-Type-Options 的 MDN 文章,但我不确定它是如何相关的。我的服务器已经在发送Content-Type: application/wasm.

wasm-pack 生成的 JavaScript 代码是这样开始的:

Firefox 是否希望我将 *.wasm 作为 发送application/javascript?或者有什么问题?

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 回答
618 浏览

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

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

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

我开玩笑说

开玩笑的调试配置输出

我的 jest.config.json

我的开发部门

.babelrc

我的测试很简单

我的 webpack.config.js

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

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

0 投票
1 回答
871 浏览

python - mac上的emsdk问题

我正在尝试使用以下命令在 mac 上设置 emsdk:

我从 git 克隆了 repo。但是,在运行上述命令时出现以下错误:

我已尝试运行以下命令来解决此问题,但并没有解决问题。

任何其他解决该问题的建议都将受到欢迎。

0 投票
1 回答
350 浏览

webassembly - WASI 与 Web-Assembly

我遇到了 web-assembly wasm,甚至我尝试了一些使用 web-assembly 的代码,最近我读到了 wasi,我注意到 Ethereum Ewasm,区块链中的 Cosmos coswasm。它们之间的主要区别是什么?什么时候 WASI 是正确的解决方案,什么时候应该使用 WebAssembly?

0 投票
1 回答
178 浏览

rust - 使用 web_sys::HtmlButtonElement 失败

设法构建和运行https://github.com/rustwasm/wasm-bindgen/tree/master/examples中的一些示例

然后从用于 Dom 操作的小原型程序开始,一切正常,直到卡在这个问题上。


使用 https://docs.rs/web-sys/0.3.35/web_sys/struct.HtmlButtonElement.html

列表pub struct HtmlButtonElement,类似于

https://docs.rs/web-sys/0.3.35/web_sys/struct.Element.htmlhttps://docs.rs/web-sys/0.3.35/web_sys/struct.HtmlElement.html

有:

给出编译错误:

ElementHtmlElement被发现在web_sys

有什么区别/缺失HtmlButtonElement?消息是否no HtmlButtonElement in the root提供线索?

0 投票
2 回答
5912 浏览

rust - 尝试在 Wasm 堆中保存字符串然后将指针保存到结构中的字符串时出现“RuntimeError:内存访问越界”

我试图Uint8Array在编码后将字符串保存在 Wasm 堆中,并将指向字符串的指针和长度保存在 Struct 中,以便以后可以访问该字符串。下面是我的代码rust

我的 JS 端代码如下:

理想情况下,它应该打印给定的字符串,但它会显示一些不相关的垃圾值。无法弄清楚出了什么问题,因为我对 rust 和 wasm 还很陌生。

这是我在运行此程序时收到的控制台消息,有时是内存错误。 控制台日志

0 投票
2 回答
2029 浏览

typescript - 将 wasm 与汇总捆绑时“缺少导出”

wasm-pack使用选项(默认值)将一些 rust 代码编译到 webassembly 后--target browser,我得到以下文件typescript/deps/ed25519xp

  • ed25519xp_bg.wasm
  • ed25519xp_bg.d.ts
  • ed25519xp.d.ts
  • ed25519xp.js
  • 包.json

我的打字稿文件如下所示:

我的 package.json 是这样的:

我的汇总配置如下所示:

当我运行命令与汇总 ( node node_modules/.bin/rollup -c) 捆绑时,我收到以下错误:

虽然,在将 .wasm 文件评估为 WAT 时,导出似乎存在:

(我已经在https://github.com/nmrshll/ed25519/tree/943fc841693401acc64260fc19d4dda08ae3503d上传了整个仓库)

如何解决“缺少出口”捆绑错误?

0 投票
1 回答
742 浏览

rust - 使用 wasm-pack 构建时在 Rust 和 JavaScript 之间传递字符串

我正在构建一个 Chrome 扩展程序,并选择使用一些 WebAssembly 功能。我使用 wasm-pack 来构建源代码,因为它提供了一个--target web降低插入 Wasm 函数的复杂性的方法。在 Rust 和 JS 之间传递整数值可以无缝地工作,但我似乎无法将字符串传递给 Rust,反之亦然。

这是我正在使用的内容:

更新:有关我如何导入和实例化 wasm 的更多信息

在使用 wasm-pack 构建并将生成的 pkg 目录导入我的 JS 文件夹之后。我通过 manifest.json 文件将 pkg 目录的内容作为 web_resource 提供给项目。

这是我在 content_script.js 中加载脚本的方式

我还注意到我生成的 wasm_bg 文件在底部有一些 Rust 错误输出。 wasm_bg 中的错误输出

0 投票
1 回答
278 浏览

rust - 为什么调用从 JavaScript 编译为 Wasm 的异步 Rust 函数时字符串参数为空?

我正在使用用 wasm-pack 构建的 wasm_bindgen。我有一个向 JS 公开的 Rust 函数:

在 HTML / JavaScript 中,我调用 Rust 函数:

启动应用程序时,单击Send按钮将调用我的 Rust 函数,但两个String参数似乎都是空白/丢失。

这是上面函数的控制台跟踪:

我不确定我在这里做错了什么。我应该改变从 JavaScript 调用 Rust 函数的方式吗?

这是重现的完整代码示例