最近在学习go语言包管理工具时遇到的问题。

问题的描述是在go文件中引入的包在GOROOT中不存在。那这里就牵扯到一个问题,你的包管理工具使用的是哪一种?

GOPATH 或者 Go mod

早期go版本的包管理工具是使用GOPATH来进行包的管理,然而在Go1.11版本之后,Go module开始用于替代GOPATH的包管理方式。Go module 是 Go1.11 版本发布的依赖管理方案,从 Go1.14 版本开始推荐在生产环境使用,于Go1.16版本默认开启。

这两种方式在go日常的开发中都得以保留。那怎么知道我们使用的是哪种包管理方式呢?

1.在终端(cmd)中输入

$ go env

会显示出与go相关的环境变量,比如我的

GO111MODULE="on"
GOARCH="amd64"
GOBIN=""
GOCACHE="/Users/yinwenjie/Library/Caches/go-build"
GOENV="/Users/yinwenjie/Library/Application Support/go/env"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOINSECURE=""
GOMODCACHE="/Users/yinwenjie/Documents/project/goproject/pkg/mod"
GONOPROXY=""
GONOSUMDB=""
GOOS="darwin"
GOPATH="/Users/yinwenjie/Documents/project/goproject"
GOPRIVATE=""
GOPROXY="https://goproxy.cn,direct"
GOROOT="/usr/local/go"
GOSUMDB="sum.golang.org"
GOTMPDIR=""
GOTOOLDIR="/usr/local/go/pkg/tool/darwin_amd64"
GOVCS=""
GOVERSION="go1.16.9"
GCCGO="gccgo"
AR="ar"
CC="clang"
CXX="clang++"
CGO_ENABLED="1"
GOMOD="/Users/yinwenjie/Documents/project/goModProject/packageTest/go.mod"
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -arch x86_64 -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/96/tk6h_bnd0ydd93xb0ntzn7s80000gn/T/go-build2298977271=/tmp/go-build -gno-record-gcc-switches -fno-common"

2.查看GO111MODULE变量的值

该变量的值有三种,分别为"on","off"和"auto"

GO111MODULE=off,go命令行将不会支持module功能,寻找依赖包的方式将会沿用旧版本那种通过vendor目录或者GOPATH模式来查找。

GO111MODULE=on,go命令行会使用modules,而一点也不会去GOPATH目录下查找。

GO111MODULE=auto,默认值,go命令行将会根据当前目录来决定是否启用module功能。这种情况下可以分为两种情形:

当前目录在GOPATH/src之外且该目录包含go.mod文件

当前文件在包含go.mod文件的目录下面。

3.查看当前文件所处的位置

由于我是将go mod的配置打开了的,因此在默认情况下是会使用go mod的管理方式。而打开的情况下很重要的一点,当前文件不能在GOPATH的src路径之下。这样go会默认使用GOPATH来进行包的管理,go mod 相关的配置就不起作用了,进而就无法进行go mod模块化的管理。

解决方式:

很简单,将相关联的go文件移除GOPATH的src路径下即可,go文件便能正常编译执行。

参考:Go go.mod入门 - 知乎

package xxx is not in GOROOT——go mod踩坑实录相关推荐

  1. go语言导入自定义包出现: package xxx is not in GOROOT (/xxx/xxx) 的解决方案

    go语言导入自定义包出现: package xxx is not in GOROOT (/xxx/xxx) 的解决方案 1.问题 写了个自定义的包 calc.go,在路径 $GOPATH/projec ...

  2. package xxx is not in GOROOT报错解决

    解决这个问题还遇到了别的问题,目录如下: 文章目录 1.package xxx is not in GOROOT 2.无法设置GOPATH 3.总结 1.package xxx is not in G ...

  3. goland报错:package XXX is not in GOROOT (X:\XXX\Go\src\XXX)

    项目场景: 新建项目,写完代码后,需求是正常运行! 问题描述: 新建一个项目,编写好代码后使用编译器的run报错,手动执行go run CODE就没问题. 详细报错信息: package Projec ...

  4. 报错package xxx is not in GOROOT or GOPATH 或者 cannot find package “xxx“ in any of

    动态演示图见 博客 GO111MODULE="off" 在GO111MODULE="off"的条件下,并且写的代码不在$GOPATH/src下,也就是说下面的m ...

  5. vscode 报错package xxx is not in GOROOT(path) 或者go: to add module requirements and sums: go mod tidy

    看了很多帖子然而解决不了问题,我自己多次实践,最终得到了解决 开启项目前本人配置了两个环境变量: 1. 2. 一开始遇到的问题: 1. 这里的问题是:我打开一个文件夹hello_go ,hello_g ...

  6. Golang引入包报错 package xxx is not in GOROOT

    GOROOT为:C:\Go GOPATH为:D:\wamp64\www\gocode 引入同目录下的business包,却报错:hello.go:5:2: package project01/mode ...

  7. golang 引入包报错package xxx is not in GOROOT

    记录最近自学 golang 遇到的坑: $GOROOT = /opt/go $GOPATH = /root/goproject 问题: 当引入gopath目录下的包, 报错: package go_c ...

  8. “package XXX is not in GOROOT“ when building a Go project2021-09-06

    解决方案 stackoverflow You may have GO111MODULE set "on", which will be on the go mod. Turning ...

  9. 【收藏】goland报错:报错package xxx is not in GOROOT or GOPATH 或者 cannot find package “xxx“ in any of

    其实,通过go run main.go命令也可以正常运行 https://blog.csdn.net/weixin_44676081/article/details/107279746

最新文章

  1. 51CTO完成B轮融资,围绕1400万社区用户的IT学习平台要怎么做?
  2. ubuntu14.04连接网络 No valid active connections found!
  3. Java学习笔记之:Java JDBC
  4. 对AD资料复制的理解
  5. java将html实体字符转换成正常字符
  6. [Codeforces1132G]Greedy Subsequences——线段树+单调栈
  7. 格式化输出,while循环,运算符,初识编码
  8. k8s核心技术-Controller(DaemonSet)_部署守护进程---K8S_Google工作笔记0034
  9. linux下提示libpng12-0缺失
  10. DWF是个什么格式,要怎么进行相应的格式转换?
  11. a59s刷机包卡刷 oppo_OPPO A59S刷机包下载|OPPO A59S刷机包官方下载-太平洋下载中心...
  12. html 屏幕录像,Screencastify:屏幕录像
  13. Your application has presented a UIAlertController的解决方法
  14. cpu功耗排行_intel酷睿10代CPU处理器功耗表
  15. brctl 配置网桥
  16. 计蒜客信息学3月普及组模拟赛
  17. 线性回归与逻辑回归/朴素贝叶斯
  18. 1--if中的return的作用/条件判断中如何退出函数
  19. MAC必装软件之HomeBrew、HomeBrew-Cask
  20. WSS、SSL 和 https 之间的关系

热门文章

  1. 七天学会javascript之体彩11选5的实现(35)
  2. Intel解决CISC到RISC问题
  3. 2005年中国科学院院士增选当选院士名单
  4. 泛式算法,仿函数和迭代器失效问题
  5. 帆软多个报表合并成一个excel 下载
  6. 计算机毕业论文设计动画,计算机动画
  7. 在线制作闪字+图片制作
  8. sa登录时的各种错误
  9. 爬取动态网页酷六视频(响应体的应用)
  10. mysql中日期函数_mysql中日期函数ADDDATE()函数用法大全