国内好的设计网站,wordpress同步发帖,宁波跨境电商公司排名前十,个人网站 免费Rust WebAssembly 入门实操遇到的问题 什么是WebAssembly跟着教程走wasm-pack build error总结 什么是WebAssembly
WebAssembly#xff08;简称Wasm#xff09;是一种基于堆栈的虚拟机的二进制指令
格式。Wasm 被设计为编程语言的可移植编译目标#xff0c;支持在 Web 上部… Rust WebAssembly 入门实操遇到的问题 什么是WebAssembly跟着教程走wasm-pack build error总结 什么是WebAssembly
WebAssembly简称Wasm是一种基于堆栈的虚拟机的二进制指令
格式。Wasm 被设计为编程语言的可移植编译目标支持在 Web 上部
署客户端和服务器应用程序。简而言之WebAssemblywasm是一种可以执行在堆栈虚拟机的二进制可执行指令集所以在你编译后将看到后缀为wasm的二进制文件这种文件可以运行在Wasm Runtime 上一般的市面上常见的浏览器均支持wasm Runtime。由此也可以看出只要有Runtime在wasm可以运行在任何结构的硬件上这也为wasm在更多领域中发挥作用提供了可能。 跟着教程走
wasm tutorial 提供了完整的从安装Rust环境到编译pkg再到运行服务调用wasm的整个教程初学者可以跟着教程走一遍有一个大概的感受。在学习教程的过程中会遇到一些问题以下是我遇到的问题作为个人整理和分享。
wasm-pack build error 根据教程上的步骤执行
wasm-pack build会自动生成pkg文件夹以及相关的文件不过在这里我遇到了下面的问题 报错显示我无法使用stable版本的rust使用示例工程中的attribute难道我需要使用nightly版本吗但是官方文档并没有要求这样做回顾以下我们跟着文档都做过什么发现cargo.toml中官方给到的wasm-bindgen 版本和我们真正使用到的版本不同 官方是0.2.84而我们使用的是0.2.97(当前最新)或许问题出在这里
[dependencies]
wasm-bindgen 0.2.87 , 0.2.88如果我们像唯一确定一个版本使用可以如上述写法而默认的
[dependencies]
wasm-bindgen 0.2.84cargo的默认行为会拉取最大子集中最新的版本因为wasm-bindgen目前还是0.xx.xx版本非稳定版本所以为了避免发生不必要的问题尽量控制版本统一好控制完版本后重新运行
wasm-pack build发生了新的问题
[INFO]: ⬇️ Installing wasm-bindgen... 我们的编译进程停止在这了看到提示是正在安装wasm-bindgenwasm-pack并没有正确获知我们已经安装了wasm-bindgen同样的问题别人已经遇到过了我们需要安装wasm-bindgen-cli
cargo install wasm-bindgen-cli --version 0.2.87需要保证的是wasm-bindgen-cli与wasm-bindgen版本要一致好的我们继续编译发现不会再停在安装wasm-bindgen上而是又出现了新的问题 生成的文件夹中没有package.json文件没有这个文件再后续的启动环节中无法找到对应的wasm包通过问题排查发现需要手动在cargo.toml中添加
[package.metadata.wasm-pack.profile.release]
wasm-opt false至此问题就全部解决了跟着教程启动服务后访问服务器便可以看到alert弹窗了。 总结
官方文档通常是我们接触技术最直接最安全的文档但是或许因为迭代之类的问题官方文档会忽略一些细节问题这就需要开发者收集整理继而解决自己的问题。