package xxx is not in GOROOT——go mod踩坑实录
最近在学习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踩坑实录相关推荐
- go语言导入自定义包出现: package xxx is not in GOROOT (/xxx/xxx) 的解决方案
go语言导入自定义包出现: package xxx is not in GOROOT (/xxx/xxx) 的解决方案 1.问题 写了个自定义的包 calc.go,在路径 $GOPATH/projec ...
- package xxx is not in GOROOT报错解决
解决这个问题还遇到了别的问题,目录如下: 文章目录 1.package xxx is not in GOROOT 2.无法设置GOPATH 3.总结 1.package xxx is not in G ...
- goland报错:package XXX is not in GOROOT (X:\XXX\Go\src\XXX)
项目场景: 新建项目,写完代码后,需求是正常运行! 问题描述: 新建一个项目,编写好代码后使用编译器的run报错,手动执行go run CODE就没问题. 详细报错信息: package Projec ...
- 报错package xxx is not in GOROOT or GOPATH 或者 cannot find package “xxx“ in any of
动态演示图见 博客 GO111MODULE="off" 在GO111MODULE="off"的条件下,并且写的代码不在$GOPATH/src下,也就是说下面的m ...
- 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 ...
- Golang引入包报错 package xxx is not in GOROOT
GOROOT为:C:\Go GOPATH为:D:\wamp64\www\gocode 引入同目录下的business包,却报错:hello.go:5:2: package project01/mode ...
- golang 引入包报错package xxx is not in GOROOT
记录最近自学 golang 遇到的坑: $GOROOT = /opt/go $GOPATH = /root/goproject 问题: 当引入gopath目录下的包, 报错: package go_c ...
- “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 ...
- 【收藏】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
最新文章
- 51CTO完成B轮融资,围绕1400万社区用户的IT学习平台要怎么做?
- ubuntu14.04连接网络 No valid active connections found!
- Java学习笔记之:Java JDBC
- 对AD资料复制的理解
- java将html实体字符转换成正常字符
- [Codeforces1132G]Greedy Subsequences——线段树+单调栈
- 格式化输出,while循环,运算符,初识编码
- k8s核心技术-Controller(DaemonSet)_部署守护进程---K8S_Google工作笔记0034
- linux下提示libpng12-0缺失
- DWF是个什么格式,要怎么进行相应的格式转换?
- a59s刷机包卡刷 oppo_OPPO A59S刷机包下载|OPPO A59S刷机包官方下载-太平洋下载中心...
- html 屏幕录像,Screencastify:屏幕录像
- Your application has presented a UIAlertController的解决方法
- cpu功耗排行_intel酷睿10代CPU处理器功耗表
- brctl 配置网桥
- 计蒜客信息学3月普及组模拟赛
- 线性回归与逻辑回归/朴素贝叶斯
- 1--if中的return的作用/条件判断中如何退出函数
- MAC必装软件之HomeBrew、HomeBrew-Cask
- WSS、SSL 和 https 之间的关系