最全总结,一步解决你的问题!
其它报错解决合集:
cannot find package “xxx“ in any of的解决方案(完美版)
解决cannot find module providing package
目录
编译或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 -->鼠标空白处点点即可正常: