首页 > 解决方案 > 错误:目录中的代码......需要导入“......” - 我该怎么办?

问题描述

我在 Go 中有项目。在我设置调试器并在 Visual Code 中启动后,它失败并显示此错误输出。我正在使用 go 1.13.4/usr/local/go

/usr/lib/go-1.10/src/crypto/tls/cipher_suites.go:18:2: code in directory /usr/lib/go-1.10/src/vendor/golang_org/x/crypto/chacha20poly1305 expects import "golang.org/x/crypto/chacha20poly1305" /usr/lib/go-1.10/src/crypto/x509/x509.go:36:2: code in directory /usr/lib/go-1.10/src/vendor/golang_org/x/crypto/cryptobyte expects import "golang.org/x/crypto/cryptobyte" /usr/lib/go-1.10/src/crypto/x509/x509.go:37:2: code in directory /usr/lib/go-1.10/src/vendor/golang_org/x/crypto/cryptobyte/asn1 expects import "golang.org/x/crypto/cryptobyte/asn1" /usr/lib/go-1.10/src/crypto/tls/key_agreement.go:20:2: code in directory /usr/lib/go-1.10/src/vendor/golang_org/x/crypto/curve25519 expects import "golang.org/x/crypto/curve25519" /usr/lib/go-1.10/src/net/http/h2_bundle.go:48:2: code in directory /usr/lib/go-1.10/src/vendor/golang_org/x/net/idna expects import "golang_org/x/text/internal/export/idna" /usr/lib/go-1.10/src/net/http/transport.go:32:2: code in directory /usr/lib/go-1.10/src/vendor/golang_org/x/net/proxy expects import "golang.org/x/net/proxy"

标签: goimportpackage

解决方案


当您的PATH.

我通过从 /usr/local 卸载 Go 1.13 来解决这个问题,但是如果您需要安装多个版本,可能会有更好的方法来处理它。

我将 VSCode Go 调试器go.goroot设置为用于我的项目的 Go 1.11 安装。我将 Go 1.13 安装到 /usr/local 以测试一个功能,然后遇到了同样的错误。

如果您有不同的 Go 版本,PATH它似乎正在使用该编译器,但在您的其他 Go 版本中针对标准库源进行编译。在以后的 Go 版本中,此目录已重命名为vendor/golang.org,并且它无法识别golang_org以前使用的 hack: https ://github.com/golang/go/commit/4d00937cecdea85b6f1eb894a6d28a53f5f2ff8a#diff-44c7c5a1dcc556d22e115d30ec0f11c9

我不确定这是否是 Delve 的一般问题,或者是 VSCode Go 扩展如何调用它的问题,但在我的情况下,最简单的解决方案是卸载 Go 1.13 并且调试器再次开始工作。


推荐阅读