Golang中无法使用syscall/js的问题
Golang中无法使用syscall/js的问题 我想使用“syscall/js”,但在构建时遇到了错误:
flb.go:5:2: build constraints exclude all Go files in C:\Go\src\syscall\js
我的 Go 版本是 “go1.13.5 windows/amd64”。
我的代码如下:
package main
import (
"fmt"
"syscall/js"
)
func main() {
var cb js.Func
cb = js.FuncOf(func(this js.Value, args []js.Value) interface{} {
fmt.Println("button clicked")
cb.Release() // release the function if the button will not be clicked again
return nil
})
js.Global().Get("document").Call("getElementById", "myButton").Call("addEventListener", "click", cb)
}
请帮我解决这个问题,并为我的英语不好表示歉意。
更多关于Golang中无法使用syscall/js的问题的实战教程也可以访问 https://www.itying.com/category-94-b0.html
你是如何编译的?
使用那个包显然只在你编译为JavaScript或WASM时才会有效。
更多关于Golang中无法使用syscall/js的问题的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
告诉IDE为正确的操作系统和架构进行构建,它可能是在您主机的上下文中尝试编译和分析。
至少,如果像上面描述的那样从终端构建能够正常工作且没有错误,那么更改IDE的目标上下文应该会有所帮助。
你好,这是我的构建脚本。
SET GOOS=js
SET GOARCH=wasm
go build -o flb.wasm fib.go
并且我的集成开发环境也报错了,请看图片。

syscall/js 包仅在 WebAssembly 目标平台(GOOS=js, GOARCH=wasm)下可用。在 Windows 系统上直接构建会因构建约束而失败。以下是解决方案:
1. 交叉编译为 WebAssembly:
GOOS=js GOARCH=wasm go build -o main.wasm flb.go
2. 使用 wasm_exec.js 加载 WASM 文件:
- 从 Go 安装目录复制
wasm_exec.js到项目目录:
cp "$(go env GOROOT)/misc/wasm/wasm_exec.js" .
3. 创建 HTML 文件加载 WASM:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script src="wasm_exec.js"></script>
</head>
<body>
<button id="myButton">Click me</button>
<script>
const go = new Go();
WebAssembly.instantiateStreaming(
fetch("main.wasm"),
go.importObject
).then((result) => {
go.run(result.instance);
});
</script>
</body>
</html>
4. 通过 HTTP 服务器运行:
# 使用 Python 快速启动服务器
python -m http.server
# 或使用 Node.js
npx serve .
访问 http://localhost:8000 即可测试按钮点击功能。
完整可运行的示例代码:
// main.go
package main
import (
"syscall/js"
)
func main() {
cb := js.FuncOf(func(this js.Value, args []js.Value) interface{} {
println("button clicked")
return nil
})
defer cb.Release()
js.Global().Get("document").
Call("getElementById", "myButton").
Call("addEventListener", "click", cb)
// 保持 Go 程序运行
select {}
}
构建命令:
GOOS=js GOARCH=wasm go build -o main.wasm main.go
这样即可在浏览器中运行 Go WebAssembly 程序并使用 syscall/js 包。

