go - 错误:目录中的代码......需要导入“......” - 我该怎么办?
问题描述
我在 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"
解决方案
当您的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 并且调试器再次开始工作。
推荐阅读
- erlang - 理解 Erlang 中的选择性接收
- javascript - 在谷歌地图上移动标记,其纬度/经度值超过小数点后 5 位
- java - 修改json字符串中的属性值
- c# - 登录表单中的提交按钮不适用于我的基于 asp net MVC 的注册和登录 application.signup 工作但登录有一些问题
- javascript - 使用php和javascript显示插入mysql的图像?
- angular - 数据未从可观察角度 6 加载到表中
- spring-boot - cron 表达式的含义 0 * * * * *?
- javascript - 没有最后括号的闭包是什么?
- angular - 从 http 转换为 https (http://localhost:4200 到 https://localhost:4200
) - php - 当我从数据库中删除多行时,laravel 中允许的内存大小有时会发生此错误