首页 > 其他分享 >运维系列&go系列:cannot find package “xxx“ in any of的通用解决方案

运维系列&go系列:cannot find package “xxx“ in any of的通用解决方案

时间:2024-05-25 19:58:06浏览次数:17  
标签:GOPATH GO111MODULE 系列 运维 package 编译 go 目录 mod

cannot find package “xxx“ in any of的通用解决方案

目录

问题背景

解决

通用解决方案


这个问题遇到频率还是比较高,这次总结出来,希望能让更多的人脱离苦海!

如有帮助,欢迎留下足迹哦!

问题背景

作者的问题:提示找不到的是工程内部自定义的包名

今天出了个奇怪的事情,编译项目提示cannot find package  "包名" in any of  其中提示找不到的包名是工程内已有的。

接连提示了好几行类似的信息。

我在本地开发时goland中使用插件与指定远程Linux机器进行了同步,目的即本地修改了的可以同步到Linux机器上,并在Linux下进行编译及其它操作。

经过仔细思考整个过程,终于发现了引起的原因:同步到远程Linux时目录是自己在/root下新建的目录,该目录并不在$GOPATH下:

在这里插入图片描述

看看$GOPATH的路径:

在这里插入图片描述

解决

把本地和远程同步的目录直接修改成$GOPATH下,即放好之后的新地址:/root/go/src/工程名   这样就OK了。

在这里插入图片描述

上面的问题是作者遇到的,作者的项目是一个非mod模式下的项目,原因就在于$GOPATH,当然各位看官的问题背景可能不一样,但原因基本相同。

通用解决方案

也就是说,项目非go mod模式时,项目需要放在$GOPATH目录下编译;

如果使用了module模式,则没有这个要求,但GO111MODULE开关必须打开。

这是通用规则。那如何确认当前项目是否是mod模式?  

1,查看该项目目录是否有go.mod和go.sum 文件,如果有则该项目使用的是mod模式,此时需要将GO111MODULE开关打开;

2,如果项目中没有go.mod和go.sum 文件,则需要将GO111MODULE开关关闭;

即模式要适配后再编译。

如何查看当前环境是否开启了GO111MODULE:

go env
 
 

查看GO111MODULE,结果为on则开启,off为关闭,auto为自动。

情况1

如果是mod项目, 模式关闭时分别去$GOROOT,$GOPATH目录下找包,如果以前没下载过 包到$GOPATH。

因此在GO111MODULE关闭的情况下编译会报这个错,此时需要将GO111MODULE打开:

set  GO111MODULE=on   
 
 

go  env -w  GO111MODULE=on
 
 

再次编译即可。

情况2

GO111MODULE开关匹配的情况下,提示找不到啥,就拉它的代码($GOPATH模式下一般需要go get,mod模式下编译时自动拉取/查询)。

可以先配置go代理:

export GOPROXY=https://goproxy.cn,direct
 
 

go  env -w GOPROXY=https://goproxy.cn,direct
 
 

然后重试,80%此时已成功。

如果依旧不行,继续走下面的:

执行 go get -u 库地址  

或手动进行:

cd  $GOPATH/src/xxx   

执行 git clone 该库git地址 

就能解决这个问题

多数是网络问题,也可换环境编译。







ProblemTerminator

cannot find package “xxx“ in any of的通用解决方案

标签:GOPATH,GO111MODULE,系列,运维,package,编译,go,目录,mod
From: https://blog.csdn.net/weixin_54626591/article/details/139199580

相关文章

  • 【Docker系列】 Docker容器具体信息查询
    ......
  • 【达梦系列】IFUN_DATETIME_MODE 导致【无效的客户端版本】
    问题描述在项目开发时,应用程序连接达梦数据库报错:无效的客户端版本。这个问题在没有调整达梦数据参数之前是正常的,调整之后就不对了,但是又不清楚到底是哪个参数的问题。因为调整达梦参数时,用了一个达梦的参数调优脚本(之前能在官网找到,现在找不到了)解决思路根据这个报错,感......
  • 使用 Coolify 极简运维你的项目和数据库
    使用Coolify极简运维你的项目和数据库引言本文将介绍一个名为Coolify的开源软件,基于Docker提供了托管网站、数据库等服务的功能,功能丰富强大,操作简单。官方自称是Heroku/Netlify/Vercel的开源替代。我在试用了以后立即决定抛弃之前nginxproxymanager+doc......
  • SpringBoot系列---【】
    1.报错信息18:11:03.812[main]ERRORorg.springframework.boot.SpringApplication-Applicationrunfailedorg.yaml.snakeyaml.error.YAMLException:java.nio.charset.MalformedInputException:Inputlength=1 atorg.yaml.snakeyaml.reader.StreamReader.update(Strea......
  • 服务器监控运维方案,一体化智能观测服务器状态
        随着信息技术发展,服务器已经成为支撑各类应用系统的核心基础设施。业务数量的日益增长和稳定运行的高要求,也给服务器的稳定性与可靠性建立了更高的标准。然而,传统的服务器管理方式往往难以发现潜在问题,导致故障预警与处置的滞后,进而影响业务的正常运行。    ......
  • 【达梦系列】设定虚拟列规则自动计算列的值
    需求描述表内字段计算出来的表内另外一个字段的值。比如成绩表有abc三个字段,插入ab即可获得c的值解决办法字符串相加时,记得要转换一下类型CREATETABLETABLE_TEST( "A"CHAR(10), "B"CHAR(10), "C"intAS(CONVERT(INT,A)+convert(INTEGER,B)));IN......
  • 【JAVA系列】JAVA与C#中List分组、排序方法
    C#中List分组、排序、动态分组定义实体类publicclassStudent{publicstringName{get;set;}publicintAge{get;set;}publicstringGrade{get;set;}}按单个属性分组classProgram{staticvoidMain(){List<Stu......
  • 单片机HC32系列IO模拟I2C 延时调试记录
    一. SysTick_Config和delay冲突因为 SysTick_Config 被用于设置SysTick为操作系统计时,而 delay 函数又使用了SysTick来实现延时,导致两者对SysTick的配置不一致。导致 SysTick_Config无法再次进入SysTick_IRQHandler()函数。 解决方法:将delay改为for循环延时。delay1......
  • netdiscover一键收集子网内的所有信息(KALI工具系列六)
    目录1、KALILINUX简介2、netdiscover工具简介3、在KALI中使用netdiscover3.1目标主机IP(win)3.2KALI的IP   4、命令示例4.1扫描子网整个网段4.2指定网卡进行扫描4.3 扫描网卡的公共网络4.4快速扫描网卡的公共lan地址4.5设置扫描间歇时间4.6嗅探arp信......
  • hping 一键开始简单的DOS攻击(KALI工具系列四)
    目录1、KALILINUX简介2、hping工具简介  3、在KALI中使用hping3.1目标主机IP(win)3.2KALI的IP  4、命令示例4.1指定端口发送TCP文件4.2端口连续性ping4.3 用ICMP去ping4.4用ACK去ping该ip4.5用UDP去ping该ip5、操作实例5.1SYN洪水攻击5.2ICMP洪水攻......