栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Go语言

【Golang】【Error】关于go mod(GO111MODULE)与 修改方法

Go语言 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【Golang】【Error】关于go mod(GO111MODULE)与 修改方法

背景

golang的mod是go 1.11开始,go推出的版本管理工具。

可以通过 go env -w GO111MODULE=xxx 来设置。

默认有三个值:auto/off/on。

GO111MODULE=auto 在 $GOPATH/src 外面且根目录有 go.mod 文件时,开启模块支持。
# 实际测试在src里面也无所谓,也可以用。

GO111MODULE=off 无模块支持,go 会从 GOPATH 和 vendor 文件夹寻找包。

GO111MODULE=on 模块支持,go 会忽略 GOPATH 和 vendor 文件夹,只根据 go.mod 下载依赖。

举个例子:

1、如果你用了 GO111MODULE=on,则如果要用到外部的依赖,则需要go mod init xxx来创建一个module,否则你用不了外部的依赖。

2、如果你用了GO111MODULE=off,依赖的获取跟go.mod没有关系,就是从$GOPATH下(或者vendor 这个没有测试过)去获取。

3、如果用了 GO111MODULE=auto,会检测 当前目录是否有go.mod,有的话 会依赖go.mod中的依赖,没有的话,则去$GOPATH下获取。

推荐的做法:

1、打开goland的 go modules integration

 2、每次用到外部依赖时,

go mod init xxx
go get -u github.com/sirupsen/logrus

这样goland和编译时,都可以使用。

常见的问题

如果设置 go env -w GO111MODULE=auto 时遇到错误,例如:

does not override conflicting OS environment varia

问题在于:

1、系统环境变量中已经有了GO111MODULE的值

2、go env会优先选择系统环境变量中的值。

解决办法:
go env | grep GO111             # 查看当前设置的值

echo $GO111MODULE               # 查看系统中设置的值

export GO111MODULE=off          # 修改

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/906355.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号