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

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

背景

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          # 修改

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/994942.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-21
下一篇 2022-05-21

发表评论

登录后才能评论

评论列表(0条)

保存