亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

構建約束排除所有 Go 文件

構建約束排除所有 Go 文件

Go
收到一只叮咚 2022-06-06 14:47:59
這是我第一次嘗試做 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 runwith GOARCH=wasmgo run執行構建的二進制文件,因為它不是操作系統本機二進制文件,但wasm最終會導致操作系統不理解它的格式。

如何直接使用wasm_exec.jsshim 和 Node.js 執行 WebAssembly 二進制文件的說明寫在golang/go repository 的 WebAssembly wiki 頁面上

要在瀏覽器中運行測試,有很好的 Golang 包agnivade/wasmbrowsertest。


查看完整回答
反對 回復 2022-06-06
  • 1 回答
  • 0 關注
  • 967 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號