実現したいこと
syscall/jsをインポートしたい。
go+WebAssemblyでgoよりJavascriptを呼び出したい。
前提
VisualStudioCode Version: 1.77.3
go version go1.19.1 windows/amd64
モジュールの構成は以下です
C
└── study
└──src
|
├── index.html
├── main.go
├──wasm_exec.js
└── .vscode
└── settings.json
発生している問題・エラーメッセージ
Goの勉強を始めました。ネットで紹介していたサンプルを試したのですが、以下のエラーが出ます。
初心者ゆえ見当がつかないです。どうかご教授お願いします。
set GOOS=js
set GOARCH=wasm
go build -o main.wasm main.go
package command-line-arguments
imports syscall/js: build constraints exclude all Go files in C:\Program Files\Go\src\syscall\js
該当のソースコード
main.go
1package main 2 3import ( 4 "strconv" 5 syscall/js"" 6) 7 8func increment(this js.Value, args []js.Value) any { 9 counter := js.Global().Get("document").Call("getElementById", "counter") 10 counterValue, err := strconv.ParseInt(counter.Get("textContent").String(), 10, 64) 11 if err != nil { 12 return map[string]any{"error": err.Error()} 13 } 14 counterValue += int64(args[0].Int()) 15 counter.Set("textContent", counterValue) 16 return map[string]any{"message": counterValue} 17} 18 19func main() { 20 js.Global().Set("goIncrement", js.FuncOf(increment)) 21 select {} // keep running 22}
index.html
1<html> 2 3<head> 4 <script src="wasm_exec.js"></script> 5 <script> 6 const go = new Go(); 7 WebAssembly.instantiateStreaming(fetch("main.wasm"), go.importObject).then((result) => { 8 go.run(result.instance); 9 }); 10 function increment(value) { 11 ret = goIncrement(value) 12 console.log(ret) 13 } 14 </script> 15</head> 16 17<body> 18 <div id="counter">0</div> 19 <button onClick="increment(1)">+1</button> 20</body> 21</html>
試したこと
go env GOOS GOARCH
windows
amd64
だったので、以下のように設定を変更したが、同じ結果。
ワークスペースのsettins.jsonを以下のように変更
settins.json
1{ 2 "gopls": { 3 "build.env": { 4 "GOOS": "js", 5 "GOARCH": "wasm" 6 } 7 } 8}
補足情報(FW/ツールのバージョンなど)
VisualStudioCode Version: 1.77.3
go version go1.19.1 windows/amd64
エディタ:Visual Studio Code v.1.77.3
OS:Windows10 Pro
Goのバージョン:1.19.1 windows/amd64
環境変数GOPATHの値:%USERPROFILE%\go
環境変数GOROOTの値:C:\Program Files\Go
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2023/04/17 06:26
2023/04/17 07:16
2023/04/17 07:44
2023/04/17 08:56
2023/04/18 06:10 編集
2023/04/18 06:17
2023/04/18 08:07