\n \n\n\n\n
0
\n \n\n\n```\n\n### 試したこと\n> go env GOOS GOARCH\nwindows\namd64\nだったので、以下のように設定を変更したが、同じ結果。\nワークスペースのsettins.jsonを以下のように変更\n```settins.json\n{\n \"gopls\": {\n \"build.env\": {\n \"GOOS\": \"js\",\n \"GOARCH\": \"wasm\"\n }\n }\n}\n```\n\n### 補足情報(FW/ツールのバージョンなど)\nVisualStudioCode Version: 1.77.3\ngo version go1.19.1 windows/amd64\n\nエディタ:Visual Studio Code v.1.77.3\nOS:Windows10 Pro\nGoのバージョン:1.19.1 windows/amd64\n環境変数GOPATHの値:%USERPROFILE%\\go\n環境変数GOROOTの値:C:\\Program Files\\Go\n\n\n\n\n\n","answerCount":1,"upvoteCount":0,"datePublished":"2023-04-17T02:34:15.937Z","dateModified":"2023-04-18T17:07:26.000Z","acceptedAnswer":{"@type":"Answer","text":"GOROOTの値がおかしい?-> 修正後は正しい値だと思います。\n\n手元でGOOS、GOARCHの値を正しくセットしてコンパイルするとエラーは出ませんでした。\nあえてGOOS、GOARCHの設定を間違えてコンパイルすると、質問のそのエラーメッセージが出力されました。\n\nGOOS、GOARCHの設定を確認しましょう。\n以下のように出力されれば正しく設定できています。\n```\n> go env GOOS GOARCH\njs\nwasm\n```\n\n# (追記)設定方法\n```\ngo env -w GOOS=js GOARCH=wasm\n```\nこれをやっておくとPC全体にこの値が効くようになります!","dateModified":"2023-04-18T17:06:52.000Z","datePublished":"2023-04-17T04:46:26.175Z","upvoteCount":1,"url":"https://teratail.com/questions/gi7qeleakdyw6y#reply-jidcg0k6y9bfy9"},"suggestedAnswer":[],"breadcrumb":{"@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"item":{"@id":"https://teratail.com","name":"トップ"}},{"@type":"ListItem","position":2,"item":{"@id":"https://teratail.com/tags/WebAssembly","name":"WebAssemblyに関する質問"}},{"@type":"ListItem","position":3,"item":{"@id":"https://teratail.com/questions/gi7qeleakdyw6y","name":"go+WebAssemblyでgoよりsyscall/jsをインポートして、Javascriptを呼び出したい。"}}]}}}
質問するログイン新規登録

Q&A

解決済

1回答

1499閲覧

go+WebAssemblyでgoよりsyscall/jsをインポートして、Javascriptを呼び出したい。

womo

総合スコア6

Go

Go(golang)は、Googleで開発されたオープンソースのプログラミング言語です。

0グッド

0クリップ

投稿2023/04/17 02:34

編集2023/04/18 04:30

0

0

実現したいこと

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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

GOROOTの値がおかしい?-> 修正後は正しい値だと思います。

手元でGOOS、GOARCHの値を正しくセットしてコンパイルするとエラーは出ませんでした。
あえてGOOS、GOARCHの設定を間違えてコンパイルすると、質問のそのエラーメッセージが出力されました。

GOOS、GOARCHの設定を確認しましょう。
以下のように出力されれば正しく設定できています。

> go env GOOS GOARCH js wasm

(追記)設定方法

go env -w GOOS=js GOARCH=wasm

これをやっておくとPC全体にこの値が効くようになります!

投稿2023/04/17 04:46

編集2023/04/18 06:19
nobonobo

総合スコア3367

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

womo

2023/04/17 06:26

特に触っていないのですが。 import "fmt"だけだとエラーはでないです。 それでも、おかしいですか?
nobonobo

2023/04/17 07:16

質問に書かれたGOROOTの値がおかしいのは確かなので確認ください。 「go env GOROOT」の結果を貼りなおしてください。
womo

2023/04/17 07:44

ご指摘の意味を理解しました。 質問のGOROOTを編集しました。
nobonobo

2023/04/17 08:56

「go env GOOS GOARCH」による結果も確認ください。 正しくは ``` js wasm ``` という出力になるはずです。
womo

2023/04/18 06:10 編集

ご回答、ありがとうございます。 結果は以下でした。 windows amd64 settings.jsonで設定するとよいとあったので、試したのですが、ダメでした。
nobonobo

2023/04/18 06:17

おお、そうだったんですね。やり方追記します!
womo

2023/04/18 08:07

沼から抜け出しました!ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.29%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問