Golang WASM报错:import object字段'gojs'不是Object
解决Go WASM中"import object field 'gojs' is not an Object"错误
问题概述
使用Golang+WASM开发基础应用时,原本正常运行的项目突然报错:
Uncaught (in promise) TypeError: import object field 'gojs' is not an Object
错误定位在WebAssembly.instantiateStreaming代码行,即使完全复制教程代码也无法解决,尝试过注释新增代码、重装Go、替换wasm_exec.js等操作,仅注释WebAssembly.instantiateStreaming时错误消失。
核心排查与解决方案
1. 修正WASM编译命令
你的编译命令存在错误,替换为以下正确命令:
GOOS=js GOARCH=wasm go build -o static/main.wasm assets/main.go
该命令会直接将编译好的main.wasm输出到static目录,避免手动复制时出现路径或文件损坏问题。
2. 确保wasm_exec.js版本匹配
必须使用当前Go安装目录下对应版本的wasm_exec.js,版本不兼容会导致go.importObject结构异常。执行以下命令复制文件:
cp "$(go env GOROOT)/misc/wasm/wasm_exec.js" static/
不要使用旧版本或第三方来源的wasm_exec.js。
3. 验证静态文件目录结构
确保项目目录结构符合以下规范:
项目根目录/ ├── assets/ │ └── main.go ├── server/ │ └── server.go └── static/ ├── index.html ├── wasm_exec.js └── main.wasm
4. 清除浏览器缓存
强制刷新浏览器(Ctrl+F5),避免旧的wasm_exec.js或main.wasm缓存干扰。
验证步骤
- 执行修正后的编译命令生成
main.wasm - 复制对应版本的
wasm_exec.js到static目录 - 启动服务器:
go run server/server.go - 访问
http://localhost:9000,打开浏览器控制台,应能看到Go Web Assembly的输出。
内容的提问来源于stack exchange,提问作者codingHuman
相关产品推荐
相关产品推荐

