问题标签 [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 回答
157 浏览

rust - 使用了函数`print`,但为什么它警告我`unused`?

这是huangjj27中的函数:env_logger/src/writer/wasm.rs

如上所示,该模块将仅使用目标wasm编译。wasm32-unknown-unknownprint函数在huangjj27:env_loggersrc\fmt\writer\termcolor\shim_impl.rs 中使用

然后我用节点测试它:

然后我得到这个令人困惑的被拒绝未使用的问题:

我的问题是:

  1. 为什么会出现警告,而我确实在wasm::print某处使用了该功能?
  2. 我该如何处理这个问题?解决或修复它是可以的(但我仍然需要启用 lint 配置)。
0 投票
1 回答
114 浏览

rust - 如何让 JAWS 屏幕阅读器确认动态内容更新

最近,我一直在研究Web Assembly (WASM)、RustYew。为了重现我的问题,我在下面添加了我的项目代码。代码本身没有任何问题,因此如果您不想先重现设置,可以跳过它。

设置

以下是这个 Yew 示例的复制粘贴- 我将所有内容保留在链接页面上。

cargo.tompl

src/lib.rs

static/index.html

有了所有这些设置并位于 yew-app 项目目录中,您可以编译它:

然后使用任何服务器使其可用,例如:

问题

之后访问127.0.0.1:8080(或应用程序运行的任何端口)时,一切看起来都很好。我很肯定,对于有视力的人来说,一切正常。不过,对于盲人 JAWS 用户来说,并没有那么多。

这是我在页面上看到的:

单击按钮时,似乎没有任何反应。使用 JAWS 光标(本质上是鼠标指针)会产生以下输出:

即使使用 JAWS 模拟鼠标点击,似乎也没有发生任何事情。我说“出现”,因为实际上,计数器会按应有的方式更新。

如果我使用 离开网站ALT + TAB,然后切换回它,然后再次使用 JAWS 光标,我可以看到更新后的计数器。不过,JAWS 基于网站创建的虚拟文档中的计数器保持不变。JAWS 确实捕获了 -function 插入的动态内容,init()因此问题本身不在于动态 WASM 内容。相反,段落中内容的更新方式似乎存在问题。

我切换到讲述人,最初遇到了完全相同的问题。然后我切换到 NVDA,一切正常运行——计数器立即更新,即使不使用任何特殊光标。

我对段落元素进行了更改:

现在讲述人也正确处理了更新;此外,Narrator 和 NVDA 现在都自动宣布计数器更新,正如他们应该根据的那样aria-live="polite"。JAWS 没有做这些事情。

然后我尝试在 JavaScript 中实现类似的东西:

包括 JAWS 在内的所有屏幕阅读器都能正确处理此问题。

很难确定罪魁祸首在哪里。看起来 JAWS 正确地处理了组件的(初始)渲染,但组件(部分)的更新没有得到正确处理。讲述人有相同的问题,但有(虽然不雅)变通方法。NVDA 和 VoiceOver 似乎是开箱即用的唯一屏幕阅读器。

这可能是 WASM 的一个问题——我需要使用另一个 WASM 编译器来实现类似的东西才能确定。这也可能是 wasm-pack 的问题(也许 JavaScript 和其他 WASM 编译器没有包含在 wasm-pack 实现中的一些可访问性措施?)或者可能是 Yew 特定的渲染问题;不过,由于 WASM 已经编译,并且 Yew 那时没有真正的业务,我对此表示怀疑。有没有人在这方面有更多的专业知识,或者只是建议我可以尝试找出这些问题的原因?

由于 NVDA 运行良好,我当然可以告诉 Windows 用户使用它,但 JAWS 仍然非常流行和广泛(我也将它用于大多数事情)。因此,最好将此问题发送到正确的地址并修复它。

0 投票
1 回答
1939 浏览

webpack - 是否可以将 wasm-bindgen 与 webpack 5 一起使用?

我遵循了wasm -bindgen的Hello World 指南(我正在使用)。wasm-bindgen = "0.2.72"

不幸的是,指南中提到的 npm 包并不是最新的。因为我想有一个干净的起点,所以我尝试升级它们。

这是package.json指南中提到的:

我删除text-encoding(因为我不关心不支持非基于 Chromium 的Edge版本)并升级@wasm-tool/wasm-pack-plugin没有问题:

工作package.json

工作webpack.config.js

我做的下一件事是升级html-webpack-pluginandwebpack本身。

有错误的package.json版本:

因为我升级webpack到版本5.27.1,所以我也不得不改变webpack.config.js这样的:

现在,当我运行npm run serve构建完成时没有错误,但是当我打开网页时,不再显示任何警报。现在在浏览器控制台中记录了以下错误:

我该怎么做才能摆脱这个问题,以便我可以使用wasm-bindgenwith webpack ^5.27.1

我很感谢任何提示。

额外观察

有趣的是,我发现,即使使用不工作的版本,也可以像这样m => m.greet('World!')删除index.js并调用 wasm 函数pkg/index.js

当我这样做时,我在控制台中不再出现错误,并且显示“你好,!”的警报 (缺少“世界”)已显示,所以我认为 .wasm 应该仍然可以......

更新

通过使用,我能够让一切恢复正常:

但是这已被弃用,所以如果有办法仍然使用asyncWebAssembly.

0 投票
1 回答
308 浏览

rust - Rust 中有类似 nodemon 的东西吗?

在 javascriptnodemon中是一个静态文件服务器,它在代码更改时重新加载。我正在使用wasm-packminiserve执行两个命令:

build

serve

我希望这两个能够像在 javascript 中一样自动化nodemon

0 投票
1 回答
1503 浏览

reactjs - Nextjs 11 新使用 import 关键字对 image 'src' 抛出错误 CompileError: mutable globals cannot be exporting

我最近升级到 nextjs 11 并使用了他们的新图像功能,您可以在其中导入图像并在 src 属性中使用它们,如下所示:

然后使用可以将其用作

它工作正常,直到它开始抛出错误

我很困惑,因为我完全按照文档 https://nextjs.org/blog/next-11#image-improvements中的使用方式使用它

这个错误似乎只发生在开发服务器上

0 投票
1 回答
63 浏览

rust - wasm-pack 代码中的 Rust 导入导致 JS 错误

我收到一个 JS 错误:Uncaught (in promise) TypeError: WebAssembly.instantiate(): Import #0 module="env" error: module is not an object or function

当我在 Chrome 开发工具中查看 wasm 文件时,我在顶部看到这样的导入语句:

是什么导致了这些导入语句?如何删除或修复它们?我可以看到它们是blst包中包含的 Rust 包的blsttc一部分。该blst包使用 bindgen 生成与 blst.h 的 FFI 绑定,所以也许这与它有关?

这个Github repo有代码。我正在使用wasm-pack build --target=web

0 投票
2 回答
396 浏览

node.js - 我编译成wasm的rust代码比js慢,我做错了什么?

这是我想在 rust 中翻译以在​​ wasm 中编译它的原始函数,因为它会使其更快(因为它是我服务器中的热门函数)

我在 rust 中这样翻译它:

使用 wasm-pack 在 wasm 中编译并使用以下配置:

结果不是想要的,似乎 js 版本比 wasm 版本快两倍。所以我问自己是否只是我的 rust 代码不好,或者我的配置,或者就我而言,wasm 不合适。

0 投票
2 回答
2300 浏览

rust - 无法安装货物 wasm-pack

当我cargo install wasm-pack在 Windows 10 64 位上运行时,出现此错误:

我该如何解决?我在常规cmd中运行它。

0 投票
0 回答
160 浏览

angular - 使用 wasm (wasm-pack / module) 的 Angular 12 预渲染错误

我的设置:

Angular:12.2
Wasm:使用 wasm-pack (target: bundler)
ngExpress 构建,用于预渲染

例子:

Github 示例代码

问题:

我尝试将预渲染添加到我现有的应用程序中。所以我添加了带有预渲染的角度通用(我已经在多个其他项目中使用过,但没有与 wasm 结合使用)。可悲的是,我在预渲染路线时收到以下错误:

renderModule 不是函数

对于应用程序(没有预渲染),我正在加载 wasm 异步。在引导应用程序之前在我的main.ts中。(因为我需要在多个地方使用 wasm 并且已经在应用启动)

main.ts

当我使用 wasm 的导出函数/对象时会发生错误,即使它们在预渲染期间没有执行/使用。如果代码中存在函数调用就足够了。

我猜预渲染错误的发生是因为之前没有加载 wasm,就像我在main.ts中为普通应用程序所做的那样。

是否有可能使用 ngExpressEngine 异步引导AppServerModule ?还是我错过了什么?

顺便提一句。当我将wasm直接加载到我需要它的地方时它正在工作(这对我来说不是一个选项,或者我必须更改工作代码只是为了预渲染):

我期待着所有的想法。谢谢

PS:构建 wasmweb / standalone并添加它不是一个选项,因为我想要 webpack 和类型支持。

0 投票
0 回答
30 浏览

rust - 我无法安装“wasm-pack”

我试着去做cargo install wasm-pack,但总是失败。这是输出:-

我什至尝试安装pkg-configlibssl-dev设置$OPENSSL_DIR为,/usr/local/ssl但我仍然遇到这个问题。