Golang中go get无法找到主模块(go modules问题)
Golang中go get无法找到主模块(go modules问题)
在使用 Go 模块时,我无法执行 go get -v -u <some-repo>。
我为此创建了一个测试项目,结构如下:
gomodinmain
├── go.mod
└── main.go
0 directories, 2 files
go.mod 文件的内容是:
module github.com/pedromss/gomodinmain
将其推送到代码仓库后,我执行以下步骤:
go clean -i -r -x- 使用
rm -rf从文件系统中删除 src 文件夹 - 导航到 GOPATH 之外
- 尝试执行
go get -v -u github.com/pedromss/gomaininroot来模拟想要开始处理此项目但本地没有代码的人
然后我收到消息:
go: cannot find main module; see 'go help modules'
如果我执行 GO111MODULE=off go get -v -u github.com/pedromss/gomodinmain,它可以正常工作。
我在这里做错了什么?
更多关于Golang中go get无法找到主模块(go modules问题)的实战教程也可以访问 https://www.itying.com/category-94-b0.html
更多关于Golang中go get无法找到主模块(go modules问题)的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
问题在于你尝试在未初始化模块的目录中执行 go get 命令。当你在 GOPATH 之外运行 go get 时,Go 会期望当前目录是一个有效的模块(包含 go.mod 文件),或者你需要指定模块模式。
以下是正确的步骤和示例:
-
在目标目录初始化模块: 如果你要在新目录获取依赖,首先需要初始化一个 Go 模块。
mkdir myproject && cd myproject go mod init myproject然后执行
go get:go get -v -u github.com/pedromss/gomodinmain -
在现有模块目录中操作: 确保你位于包含
go.mod文件的目录中。例如,如果你的项目结构是:myproject/ ├── go.mod └── main.go在
myproject目录下直接运行:go get -v -u github.com/pedromss/gomodinmain -
使用
-d标志仅下载代码: 如果你只想下载代码而不构建/安装,可以添加-d标志:go get -d -v -u github.com/pedromss/gomodinmain
错误信息 cannot find main module 表示 Go 无法在当前位置找到或识别到 go.mod 文件。通过 GO111MODULE=off 可以工作是因为它禁用了模块支持,回退到旧的 GOPATH 模式,但这不推荐使用。
示例代码演示初始化模块并获取依赖:
# 创建并进入新目录
mkdir newproject && cd newproject
# 初始化模块
go mod init example.com/newproject
# 现在可以正常使用 go get
go get -v -u github.com/pedromss/gomodinmain
这会在当前目录创建 go.mod 文件并成功获取指定的仓库。

