这是我第一次尝试做 Webassembly,我遇到了一个问题。我正在使用: go 版本 go1.14.3 linux/amd64代码正确编译:GOARCH=wasm GOOS=js go build -o lib.wasm main.go当我这样做时:运行 main.go我收到以下错误:main.go:8:2:构建约束排除 /usr/local/go/src/syscall/js 中的所有 Go 文件任何想法如何解决这个问题?package mainimport ( "flag" "log" "net/http" "strconv" "syscall/js")var ( listen = flag.String("listen", ":8080", "listen address") dir = flag.String("dir", ".", "directory to serve"))func add(i []js.Value) { value1 := js.Global().Get("document").Call("getElementById", i[0].String()).Get("value").String() value2 := js.Global().Get("document").Call("getElementById", i[1].String()).Get("value").String() int1, _ := strconv.Atoi(value1) int2, _ := strconv.Atoi(value2) js.Global().Get("document").Call("getElementById", i[2].String()).Set("value", int1+int2)}func subtract(i []js.Value) { value1 := js.Global().Get("document").Call("getElementById", i[0].String()).Get("value").String() value2 := js.Global().Get("document").Call("getElementById", i[1].String()).Get("value").String() int1, _ := strconv.Atoi(value1) int2, _ := strconv.Atoi(value2) js.Global().Get("document").Call("getElementById", i[2].String()).Set("value", int1-int2)}func registerCallbacks() { js.Global().Set("add", new(func())) js.Global().Set("subtract", new(func())) //js.Global().Set("subtract", js.NewCallback(subtract)) //cannot use add (type func([]js.Value)) as type func(js.Value, []js.Value) interface {} in argument to js.FuncOf //js.Global().Set("add", js.FuncOf(add)) //js.Global().Set("subtract", js.FuncOf(subtract))}func main() { flag.Parse() log.Printf("listening on %q...", *listen) log.Fatal(http.ListenAndServe(*listen, http.FileServer(http.Dir(*dir)))) c := make(chan struct{}, 0) println("WASM Go Initialized") // register functions registerCallbacks() <-c}
1 回答
慕森王
TA贡献1777条经验 获得超3个赞
你不能使用go run
with GOARCH=wasm
; go run
执行构建的二进制文件,因为它不是操作系统本机二进制文件,但wasm
最终会导致操作系统不理解它的格式。
如何直接使用wasm_exec.js
shim 和 Node.js 执行 WebAssembly 二进制文件的说明写在golang/go repository 的 WebAssembly wiki 页面上。
要在浏览器中运行测试,有很好的 Golang 包agnivade/wasmbrowsertest。
- 1 回答
- 0 关注
- 862 浏览
添加回答
举报
0/150
提交
取消