【GoLand】go: cannot find main module;see ‘go help modules‘ - Go语言中文社区

【GoLand】go: cannot find main module;see ‘go help modules‘


一、解决方案

原汁原味的报错信息如下:
GoLand报错截图
报错原因是没有使用 go modules 进行模块管理,无法记录和解析对其他模块的依赖性。只需要在项目根目录执行命令 go mod init 即可。

需要注意的是,使用 go modules 需要设置 go 的环境变量 GO111MODULE 的值。

二、相关知识点

GO111MODULE

GO111MODULE 取值有三种:offonauto(默认值)。

  • GO111MODULE=off,无模块支持,从 $GOPATH 和 vendor 文件夹寻找依赖包。
  • GO111MODULE=on,有模块支持,go 会忽略 $GOPATH 和 vendor 文件夹,只根据 go.mod 下载依赖。
  • GO111MODULE=auto,go 命令行将会根据当前目录来决定是否启用 modules 功能。可分为两种情形:
    • 项目在 $GOPATH/src 之外且项目根目录有 go.mod 文件时,开启模块支持;
    • 项目在 $GOPATH/src 内部,即使存在 go.mod 文件,也不提供模块支持。

当模块功能启用时,依赖包的存放位置变更为 $GOPATH/pkg,允许同一个 package 多个版本并存,且多个项目可以共享缓存的 module。

常用命令分享

个人习惯是,在执行项目前,先执行下面两条命令:

$ go get -u
$ go mod tidy

go get -u 命令会利用网络来更新已有代码包及其依赖包。默认情况下,只会下载本地不存在的代码包,而不会更新已有的代码包。
go mod tidy 命令会拉取缺少的模块,移除不用的模块。

参考文章

  1. go mod 使用

  2. golang版本管理工具GO111MODULE

  3. Go 模块解惑:到处都是 GO111MODULE ,这到底什么?

  4. go get

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/huwei1844352682/article/details/107118289
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2021-06-12 21:26:44
  • 阅读 ( 2002 )
  • 分类:Goland

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢