我遇到了一个奇怪的错误。我有一个更大的项目,可以很好地编译典型的go build
。但是当我切换到TinyGo(v0.8.0)时。我从这段代码中得到上面的错误:
func main() {
_ = lib.NewObject{
Version: lib.Const,
}
}
我更改了名称以减少混淆,但符号完全相同。lib.Const
是lib.Version
的常数。指针也不是。
我知道这是一个非常具体的问题,因为它属于TinyGo领域。这更像是"记录"...另外,我什至不得不创建"tinygo"标签,因为这个问题非常具体。但要添加更多详细信息:
- 在添加上述代码之前,它一直在编译。
- 确切的构建命令是
tinygo build -target=wasm -o build/out.wasm src/main-wasm.go
这是编译器的错误:https://github.com/tinygo-org/tinygo/issues/726
它源于以不同的名称两次导入相同的包。在本例中,它是:
// file1:
import "./lib"
// file2:
import "../lib"
上面做了包"lib"的 2 个实例。使用普通的 Go 编译器时,这通常是可以的。但是TinyGo没有适当的机制来正确处理这个问题。
建议追加到$GOPATH
以防止使用相对路径:
// file1:
import "lib"
// file2:
import "lib"