这是我第一次尝试做 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 main
import (
"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
}
慕森王
相关分类