有效解决package ‘xxxx‘ is not in GOROOT

本文详细介绍了在Go项目中遇到'cannot find package'错误时的解决步骤,包括检查GO111MODULE环境变量,确认项目是否启用mod模式,以及在不同模式下的处理方法。针对在Linux环境下编译的问题,提供了具体的操作建议,如使用'go mod init'和'go mod tidy'命令,并强调了在不同操作系统间迁移项目时的注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最全总结,一步解决你的问题!

其它报错解决合集:

cannot find package “xxx“ in any of的解决方案(完美版)

解决cannot find module providing package

目录

1,项目是mod模式

2,项目未开启mod模式


编译或run  go工程时报该错,首先查看环境变量  go env 看GO111MODULE是什么状态,以及项目本身是不是mod模式。

按项目本身的模式分为两种情况处理

1,项目是mod模式

a) 如果GO111MODULE=on,则看看工程下面是否有go.mod文件,如果没有则执行

go mod init

接着执行

go mod tidy

即可;

b) 如果GO111MODULE=on,且有go.mod,则直接go mod tidy

c) 如果GO111MODULE=off,则开启mod模式:

export GO111MODULE="on"

然后继续走a)

d) 还有一种情况,本地go mod项目如果想手动传到linux上进行编译运行,若直接把go.mod文件直接传上去,则也会报这个错,正确的做法是在Linux目录下新创建该项目并执行go mod init ,然后把本地工程所有文件包括go.mod传上去再build,这时候就正常了哦

2,项目未开启mod模式

此时默认从$GOPATH下扫描,如果是在linux下编译或运行,则关闭GO111MODULE:
 

export GO111MODULE="off"

source /etc/profile

关闭后可go  env再查一查是否生效;

如果是在goland下,则去掉该按钮-->ok -->鼠标空白处点点即可正常:

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ProblemTerminator

您的鼓励将是作者最大的动力哦!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值