目前还没有办法使用Go编译器在浏览器之外生成wasm。你示例中的main.wasm
是用于与wasm_exec.js
桥接程序一起使用的。但是,有方法可以在Node中使用它。这是我以前在同一主题上的答案。所以,你的选择是:
- 像上面链接的问题一样使用Node
node wasm_exec.js main.wasm
- 使用支持wasi的tinygo进行编译
tinygo build -target=wasi -o main.wasm main.go
wasmtime
应该可以很好地运行这个。
- 第三个秘密选项:Go实际上在浏览器之外对wasm有非常非常前沿的支持。我不认为任何发布版本的go编译器都启用了该功能,所以您可能需要从源代码编译go。编译完成后,您的命令应该变成:
GOOS=wasip1 GOARCH=wasm go build -o main.wasm
针对您的问题,我建议选择(1),以便至少有一些可用的东西,并且如果您想要独立运行它,则选择(2)wasmtime
。如果您不想自己编译,新的go版本也很快就会发布。
编辑:
我有时间自己研究了一下。似乎选项3并不难自己完成:
我按照这里的说明获取了最新的go
源代码构建,只需要:
go install golang.org/dl/gotip@latest
gotip download
在进行引导之前,您必须已经安装了go
,但是任何最近的版本都可以。按照这些说明后,您可以像使用go
一样使用gotip
。因此,您的命令变成:
GOOS=wasip1 GOARCH=wasm gotip build -o main.wasm
由于 wasmtime
支持 wasi
,因此您应该能够在不对命令进行其他修改的情况下运行程序。
如果您有足够强大的计算机,编译 gotip
也不会花费太多时间。