Go从1.14升级至1.17后modules失效,go get无法修复报错
Go 1.17模块管理调整说明及问题解决方案
Go 1.17相对1.14的模块机制核心变化
- GO111MODULE默认值从
auto调整为on,彻底废弃了GOPATH模式的依赖查找逻辑。1.14版本中如果代码存放在GOPATH/src目录下,会自动禁用模块模式,直接从GOPATH读取依赖;1.17版本无论代码存放路径,只要当前项目没有go.mod文件,就不会读取GOPATH下的依赖包。 go get命令行为调整:无go.mod文件的目录下执行go get不会再将依赖下载到GOPATH作为全局依赖使用,仅会在已初始化模块的项目下添加对应依赖条目。- 新增依赖裁剪规则,依赖解析更严格,不会自动隐式引入未声明的间接依赖,所有依赖必须明确记录在
go.mod文件中才会被识别。
问题处理步骤
- 进入项目根目录,执行模块初始化命令,替换成你自己的模块名即可:
go mod init <your-module-name>
示例:go mod init gin-test - 再次执行gin依赖安装命令:
go get github.com/gin-gonic/gin - 执行依赖整理命令,自动补齐所有缺失的间接依赖(可选,推荐执行):
go mod tidy - 重新运行代码即可正常识别依赖:
go run main.go
内容的提问来源于stack exchange,提问作者pguardiario
相关产品推荐
相关产品推荐

