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 文件时,我在顶部看到这样的导入语句:

(module
  (func $blst_hash_to_g2 (;0;) (import "env" "blst_hash_to_g2") (param i32 i32 i32 i32 i32 i32 i32))
  (func $blst_sign_pk2_in_g1 (;1;) (import "env" "blst_sign_pk2_in_g1") (param i32 i32 i32 i32))
  (func $blst_scalar_from_bendian (;2;) (import "env" "blst_scalar_from_bendian") (param i32 i32))
  (func $blst_sk_check (;3;) (import "env" "blst_sk_check") (param i32) (result i32))

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

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

构建

解决方法

我通过切换到最新的 Ubuntu 20.04 解决了这个问题,现在效果很好。我使用的是 mac os 10.15.7。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...