我一直在使用 Golang 和 WASM 制作一个基本的应用程序(一个基本的游戏,但它对于这个问题来说并不是那么重要,因为你很快就会发现)并了解技术,所以我建立了一个项目并且运行良好...直到它停止工作,对吧?我不太确定我做了什么,但代码停止执行,没有任何错误,除了
"Uncaught (in promise) TypeError: import object field 'gojs' is not an Object".
由此我知道它与 fetch()
有关,我通过注释掉代码的不同部分来确认这一点,直到我将其范围缩小到这一行:
//errors here
WebAssembly.instantiateStreaming(fetch("main.wasm"), go.importObject).then((result) => {
//not here (obviously not running though)
go.run(result.instance);
});
这也不是我原来的应用程序,因为我创建了一个新应用程序,并且(这次确保)直接复制并粘贴本文中的每一行代码:https://golangbot.com/web assembly-using-go / 这样我就可以确定这不是我的代码的问题。 (因为我不会写)
我尝试做的一切来解决这个问题(按顺序):
这是我的代码:
资产/main.go
package main
import (
"fmt"
)
func main() {
fmt.Println("Go Web Assembly")
}
服务器/server.go
package main
import (
"fmt"
"net/http"
)
func main() {
err := http.ListenAndServe(":9000", http.FileServer(http.Dir("./static")))
if err != nil {
fmt.Println("Failed to start server", err)
return
}
}
静态/index.html
<html>
<head>
<meta charset="utf-8"/>
<script src="wasm_exec.js"></script>
<script>
const go = new Go();
WebAssembly.instantiateStreaming(fetch("main.wasm"), go.importObject).then((result) => {
go.run(result.instance);
});
</script>
</head>
<body></body>
</html>
静态/wasm_exec.js
I'm not putting this here unless I need to...
我使用的命令(来自项目根目录):
go run server/server.go
(运行服务器)
GOOS=js GOARCH=wasm go assets/build main.go
(要构建 wasm 文件,我知道我不必将文件拖放到静态文件夹中,这只是临时文件夹)
这是我在 StackOverflow 上的第一个问题,所以如果您需要任何我没有在这里发布的内容,请告诉我。 我已经尽力在互联网上找到一些东西,但我找不到有关此错误的任何内容,请帮助。
我也有同样的问题。然后我发现这个问题在Firefox中不存在。我在 chrome 中为“Experimental WebAssembly”设置了一些标志值以寻求解决方案 请参阅:chrome://flags