Golang Go语言中 Goland 打开项目报错(执行 go list 报错)

发布于 1周前 作者 zlyuanteng 来自 Go语言

背景

使用 Goland 打开新项目(higress-standalone)报错,原因是自动执行了 go list -m -json all

➜  apiserver git:(main) ✗ go list -m -json all
go: istio.io/[email protected]: reading 
https://goproxy.cn/istio.io/istio/@v/v0.0.0.info: 404 Not Found
        server response: not found: istio.io/[email protected]: invalid version: unknown revision v0.0.0

分析

依赖了 Higress 项目,然后 Higressgo.mod 中依赖了 [email protected], 并 replace 到本地本地目录, ./external 是需要额外执行命令生成的目录

// higress => go.mod

… require istio.io/istio v0.0.0 … replace istio.io/istio => ./external/istio …

总结

怀疑 go list 解析的时候找不到 external 目录导致报错,有啥解决方法吗

此外还有个疑问:

  1. Goland 可以修改 go list 执行参数吗,测试发现 go list -json all命令执行正常

Golang Go语言中 Goland 打开项目报错(执行 go list 报错)

更多关于Golang Go语言中 Goland 打开项目报错(执行 go list 报错)的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html

4 回复

更新:

repalce 到本地的 higress 项目(带 external 目录) 也是报错,在 higress 本地执行 go list 不报错

更多关于Golang Go语言中 Goland 打开项目报错(执行 go list 报错)的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


更新:

repalce 到本地的 higress 项目并修改其 go.mod
<br>diff --git a/go.mod b/go.mod<br>index 9aa6ada..cd4ce0f 100644<br>--- a/go.mod<br>+++ b/go.mod<br>@@ -38,7 +38,7 @@ require (<br> <a target="_blank" href="http://istio.io/api" rel="nofollow noopener">istio.io/api</a> v0.0.0-20211122181927-8da52c66ff23<br> <a target="_blank" href="http://istio.io/client-go" rel="nofollow noopener">istio.io/client-go</a> v1.12.0-rc.1.0.20211118171212-b744b6f111e4<br> <a target="_blank" href="http://istio.io/gogo-genproto" rel="nofollow noopener">istio.io/gogo-genproto</a> v0.0.0-20211115195057-0e34bdd2be67<br>- <a target="_blank" href="http://istio.io/istio" rel="nofollow noopener">istio.io/istio</a> v0.0.0<br>+ <a target="_blank" href="http://istio.io/istio" rel="nofollow noopener">istio.io/istio</a> v0.0.0-20230729021048-781316393709<br> <a target="_blank" href="http://istio.io/pkg" rel="nofollow noopener">istio.io/pkg</a> v0.0.0-20211115195056-e379f31ee62a<br> <a target="_blank" href="http://k8s.io/api" rel="nofollow noopener">k8s.io/api</a> v0.22.2<br> <a target="_blank" href="http://k8s.io/apimachinery" rel="nofollow noopener">k8s.io/apimachinery</a> v0.22.2<br><br>

这个好像就是有问题,可能需要 fork 自己改一下了

阿里的开源就是这样子的,上次我用 datax 也是各种问题;说白了就是借开源打广告

在使用 GoLand 打开 Go 语言项目时遇到 go list 报错的问题,通常可能由以下几个原因引起:

  1. GOPATH 或 GOMODULE 设置不当

    • 确保你的 GOPATH 环境变量设置正确,且项目位于 GOPATH 下的 src 目录,或者你正在使用 Go Modules(GO111MODULE=on)。
    • 检查项目根目录下是否存在 go.mod 文件,以确认是否在使用 Go Modules。
  2. 依赖管理问题

    • 如果项目依赖未正确初始化或更新,可能会导致 go list 失败。尝试在项目根目录下运行 go mod tidy 来清理未使用的依赖,并添加缺失的依赖。
    • 确认所有依赖的 Go 版本与你的开发环境相匹配。
  3. IDE 配置问题

    • 检查 GoLand 的配置,确保它使用正确的 Go SDK 版本。可以在 Settings/Preferences -> Go -> SDKs 中检查和配置。
    • 有时候,重启 GoLand 或清除其缓存(File -> Invalidate Caches / Restart…)可以解决一些奇怪的错误。
  4. 环境变量和路径问题

    • 确保系统的 PATH 环境变量包含了 Go 的安装路径。
    • 如果你在特定操作系统(如 Windows)上遇到权限问题,尝试以管理员身份运行 GoLand。

如果上述步骤仍然无法解决问题,建议查看具体的错误信息或日志,以获取更详细的故障排查线索。同时,也可以考虑在 Go 社区论坛或 Stack Overflow 等平台寻求帮助。

回到顶部