go mod 安装依赖 unkown revision问题的解决方案


Posted in Golang onMay 06, 2021

背景

公司一个golang的项目,使用到了公司的私有仓库,去执行go mod tidy(下载依赖)的时候,到download公司私有库的时候就报错,报错信息也不明显,只是提示找不到影响版本unkown revision

小知识

go mod

golang用来管理用来的,类似java的maven(但肯定没有maven这么好用)

go mod tidy ,下载更新依赖

go install这种下载依赖的方式其实是通过go get的方式去下载的

go insall -x 加上-x命令,可以查看更多的错误信息

golang环境配置

linux

安装go >= 1.12.x
vi /etc/profile
export GOROOT=/usr/local/go (go语言安装路径)
export GOPATH=/data/go (go业务代码环境路径)
export GO111MODULE=on (启用Mod依赖)
export GOPORT=8082 (启动端口,默认8080)
export GIN_MODE=debug (gin环境模式,线上用release)
export GOPRIVATE=gitlab.XXXX.com/XXX/* (公司私有私有库)
source /etc/profile

可惜我的环境是windows上的,索性也折腾了一下

使用的是windows的powershell
ls env:  显示环境变量
$env:GOPRIVATE="gitlab.XXXX.com/XXX/*"   设置环境变量

go mod 安装依赖 unkown revision问题的解决方案

当然你可以直接通过图形化界面去配置,原理一致

git 配置

git的默认配置在当前用户目录的.gitconfig文件中,不管是windows还是linux

git config -l 查看git的所有配置
git config --global user.name="jwen" 设置global配置

踩坑

golang版本问题

电脑上本来使用的是go1.12,看代码里面给出的说是大于1.12就行了的,但知道golang的1.12和1.13版本有比较大区别,因为我就强行升级了一波,直接来到了golang1.14版本

在1.12版本的时候,要手动打开GO111MODULE ,就是导入这个环境变量GO111MODULE=on

而在1.13版本的话,就跟根据目录是否有go.mod文件自动打开的

所以建议升级就golang版本到1.13以上版本

**

git版本问题

这个是万万没想到的,说是go mod调用链中会用到一些git指令,当git版本比较旧时,调用失败产生错误,并给出歧义的提示信息,提示unknown revision

解决方法:更新git

gitlab请求问题

公司的gitlab仓库请求的是http请求,而不是https请求,这个需要根据公司实际情况来看

解决办法

1、确认golang,git版本,建议升级到最新版本;

2、新增golang的环境变量,新增GOPRIVATE,value配置为自己需求的私有仓库,让golang可以下载私有库的东西

建议直接golang设置
golang设置
go env -w GOPRIVATE="gitlab.xxx.com/xxxx/*"
linux配置
export GOPRIVATE=gitlab.xxx.com/xxxx/*
windows配置
$env:GOPRIVATE="gitlab.XXXX.com/XXX/*"

3、修改git配置,因为go install/mod tidy 去下载依赖其实是通过git命令去下载的,而且默认是http协议去下载的,建议是修改为ssh协议去获取

方法一:通过修改文件方式,去到当前用户目录修改.gitconfig文件,新增如下,注意私有库是http还是https

[url "git@gitlab.xxxx.com:"]
 insteadOf = http://gitlab.xxxxx.com/

方法二:通过命令行形式,直接执行命令如下:

git config --global url."git@gitlab.xxxx.com:".insteadOf http://gitlab.xxxx.com/

4、然后执行go install 或者 go mod tidy确认是否可以正常下载依赖

补充:go mod download 私有仓库依赖时返回 unknown revision v1.0.1问题处理

1、go设置私有仓库

go env -w GOPRIVATE="YourRepositorySite/*"

2、git config --global url."https://YourRepositorySite".insteadof "ssh:git@YourRepositorySite"

将ssh地址切换成https

3、设置记住密码

git config --global credential.helper store

4、git clone YourRepositorySite 记住密码

5、go mod download下载成功

以上为个人经验,希望能给大家一个参考,也希望大家多多支持三水点靠木。如有错误或未考虑完全的地方,望不吝赐教。

Golang 相关文章推荐
golang gopm get -g -v 无法获取第三方库的解决方案
May 05 Golang
Golang中异常处理机制详解
Jun 08 Golang
Go语言设计模式之结构型模式
Jun 22 Golang
go语言使用Casbin实现角色的权限控制
Jun 26 Golang
golang 实用库gotable的具体使用
Jul 01 Golang
基于Go语言构建RESTful API服务
Jul 25 Golang
Go 中的空白标识符下划线
Mar 25 Golang
Go并发4种方法简明讲解
Apr 06 Golang
Go调用Rust方法及外部函数接口前置
Jun 14 Golang
GoFrame基于性能测试得知grpool使用场景
Jun 21 Golang
Go本地测试解耦任务拆解及沟通详解Go本地测试的思路沟通的重要性总结
Jun 21 Golang
GO中sync包自由控制并发示例详解
Aug 05 Golang
解决golang 关于全局变量的坑
May 06 #Golang
Goland使用Go Modules创建/管理项目的操作
解决goland 导入项目后import里的包报红问题
Go 自定义package包设置与导入操作
goland 设置project gopath的操作
解决Goland 同一个package中函数互相调用的问题
浅谈golang package中init方法的多处定义及运行顺序问题
You might like
PHP函数分享之curl方式取得数据、模拟登陆、POST数据
2014/06/04 PHP
PHP字符串word末字符实现大小写互换的方法
2014/11/10 PHP
PHP输出两个数字中间有多少个回文数的方法
2015/03/23 PHP
修改WordPress中文章编辑器的样式的方法详解
2015/12/15 PHP
解决php用mysql方式连接数据库出现Deprecated报错问题
2019/12/25 PHP
分享8个Laravel模型时间戳使用技巧小结
2020/02/12 PHP
cssQuery()的下载与使用方法
2007/01/12 Javascript
xtree.js 代码
2007/03/13 Javascript
文本框倒叙输入让输入框的焦点始终在最开始的位置
2014/09/01 Javascript
jq实现左侧显示图片右侧文字滑动切换效果
2015/08/04 Javascript
JS实现设置ff与ie元素绝对位置的方法
2016/03/08 Javascript
javascript中利用柯里化函数实现bind方法
2016/04/29 Javascript
分享JS数组求和与求最大值的方法
2016/08/11 Javascript
JavaScript类的写法
2016/09/17 Javascript
touch.js 拖动、缩放、旋转 (鼠标手势)功能代码
2017/02/04 Javascript
jQuery使用eraser.js插件实现擦除、刮刮卡效果的方法【附eraser.js下载】
2017/04/28 jQuery
vue 引用自定义ttf、otf、在线字体的方法
2019/05/09 Javascript
vue实现拖拽进度条
2021/03/01 Vue.js
Python实现全角半角转换的方法
2014/08/18 Python
Python程序中使用SQLAlchemy时出现乱码的解决方案
2015/04/24 Python
Python程序中设置HTTP代理
2016/11/06 Python
python3使用flask编写注册post接口的方法
2018/12/28 Python
python开发游戏的前期准备
2019/05/05 Python
Python 自由定制表格的实现示例
2020/03/20 Python
Python devel安装失败问题解决方案
2020/06/09 Python
Python+Dlib+Opencv实现人脸采集并表情判别功能的代码
2020/07/01 Python
python中spy++的使用超详细教程
2021/01/29 Python
MyFrenchPharma中文网:最大的法国药妆平台
2016/10/07 全球购物
Speedo澳大利亚官网:全球领先游泳品牌
2018/02/04 全球购物
如果一个类实现了多个接口但是这些接口有相同的方法名将会怎样
2013/06/16 面试题
Solaris操作系统的线程机制
2012/12/23 面试题
护士自我介绍信
2014/01/13 职场文书
计算机相关专业自荐信
2014/07/02 职场文书
参观邀请函范文
2015/02/02 职场文书
2015年化妆品销售工作总结
2015/05/11 职场文书
Redis高并发防止秒杀超卖实战源码解决方案
2021/11/01 Redis