go module @latest 找到但不包含包

xpt*_*xpt 12 module go

我第一次尝试使用 go 模块。以下错误消息究竟告诉我什么?

module github.com/mkideal/cli@latest found (v0.2.2), but does not contain package github.com/mkideal/cli
module github.com/mkideal/cli@latest found (v0.2.2), but does not contain package github.com/mkideal/cli/ext
Run Code Online (Sandbox Code Playgroud)

它发生在go build,而go get很好:

$ go get -v github.com/mkideal/cli
go: github.com/mkideal/cli upgrade => v0.2.2
Run Code Online (Sandbox Code Playgroud)

但不是go get -v ./...,这给了我与上述相同的错误。我的代理设置看起来不错:

$ go env | grep GOPROXY
GOPROXY="https://proxy.golang.org,direct"
Run Code Online (Sandbox Code Playgroud)

这是我尝试使用的 go 模块/包的问题,​​还是我自己的代码的问题?- 我看了一下 https://github.com/mkideal/cli/blob/master/go.mod对我来说似乎很好。

有关详细信息,请参阅以下更新。

我怎样才能克服这种情况?(我自己的回购也收到了相同的错误消息)

更新:

这是我如何收到上述错误的完整日志:

现在的细节:

$ cd /tmp/015-file

$ GO111MODULE=on

$ go mod init github.com/mkideal/cli/015-file
go: creating new go.mod: module github.com/mkideal/cli/015-file

$ cat go.mod 
module github.com/mkideal/cli/015-file

go 1.14

$ go build
go: finding module for package github.com/mkideal/cli
go: finding module for package github.com/mkideal/cli/ext
main.go:6:2: module github.com/mkideal/cli@latest found (v0.2.2), but does not contain package github.com/mkideal/cli
main.go:7:2: module github.com/mkideal/cli@latest found (v0.2.2), but does not contain package github.com/mkideal/cli/ext

$ go get -v github.com/mkideal/cli
go: github.com/mkideal/cli upgrade => v0.2.2

$ go get -v ./...
go: finding module for package github.com/mkideal/cli
go: finding module for package github.com/mkideal/cli/ext
go: finding module for package github.com/mkideal/cli
go: finding module for package github.com/mkideal/cli/ext
main.go:6:2: module github.com/mkideal/cli@latest found (v0.2.2), but does not contain package github.com/mkideal/cli
main.go:7:2: module github.com/mkideal/cli@latest found (v0.2.2), but does not contain package github.com/mkideal/cli/ext

$ go version
go version go1.14.1 linux/amd64


Run Code Online (Sandbox Code Playgroud)

小智 18

可以运行: go clean -modcache

更多详情 go help clean

  • 您好,欢迎来到 SO。考虑发表评论而不是答案,因为这不会提供问题所要求的任何信息,而是提供提示或 OP 可以做的其他事情。 (5认同)

And*_*iep 14

清理 Golang 缓存应该可以完成以下工作:

go clean -cache
go clean -modcache
Run Code Online (Sandbox Code Playgroud)

有关此命令如何工作的更多信息,请使用go help clean. 如果您的测试环境有类似问题,请运行go clean -testcache.


小智 8

就我而言,清理缓存没有帮助。在打印的项目根目录中
运行,这是根本原因,同时运行打印有关丢失包的信息。go installno Go files in ...go install gitlab.com/....

必须做的是在项目根目录中创建一个带有main函数的 go 文件。


Moh*_*eed 5

就我而言,go.mod 文件位于 src 下,将 go.mod 文件移动到上一级后,它就可以工作了

请参阅下面的示例,

“找不到包”错误时的目录结构

dir1/src/
   main.go
   go.mod
   go.sum
Run Code Online (Sandbox Code Playgroud)

修复后的目录结构

dir1/
   go.mod
   go.sum
   src/
     main.go
Run Code Online (Sandbox Code Playgroud)


Mar*_*eli 5

我有类似的问题。就我而言,package其中的名称go.mod与其所在文件夹的名称不匹配。