一次报错的 彻底明白 go的GOROOT ,GOPATH 以及go mod (cannot find module providing package bufio)

今天看c盘满了,想着删掉一些文件(五六年的破电脑了,low的一批)

事情起因

之前的一个项目的后台是用go写的,之前是用的GOROOT的,今天看到了go mod ,心想这是什么东东哦。(刚接触go语言不久,可能有点out了),在找了几篇像模像样的博客之后,惊奇的发现有大大这样描述 : go.mod 就如同java的pom.xml一样,卧槽,卧槽,这个有点叼,在我的理解中java的maven做依赖管理,其实我更想说go.mod 就如同前端的package.json包管理工具一样,这样就可以在协作开发中,保持一致的开发环境了。所以 搞一波go 的module吧。

一个报错

cannot find module providing package bufio 

然后 在goland 把项目的setting 的GOPATH 去掉

一次报错的 彻底明白 go的GOROOT ,GOPATH 以及go mod (cannot find module providing package bufio)_第1张图片
大概就是这个样子

接着把以前的项目搞过来,期间要改造下 其实很简单 go版本 在1.12的 ,项目目录下执行,go mod init 模块名, 操作过后目录下会出现go.mod 文件, 这个文件就是类似pom.xml 或者 package.json。 接着运行下项目,会发现goland 正在下载 包, 这些包默认会在你电脑的GOPATH下的pkg/mod/cache/download 下。 下载过程中有可能会出现下载失败问题, 例如: golang.org/x/** 这些包,其实处理这个问题也很简单,只需要给goland配置个代理就行了 我的这这样的

一次报错的 彻底明白 go的GOROOT ,GOPATH 以及go mod (cannot find module providing package bufio)_第2张图片
如果一些顺利你将会碰到 这个报错

 build command-line-arguments: cannot find module  这里后面一堆本地路径

这是因为在go module下 你源码中 impot …/ 这样的引入形式不支持了, 应该改成 impot 模块名/ 。 这样就ok了

终于到了 报正在错的时候了

接下来 我的项目中报了这个错

cannot find module providing package bufio

原因: 这个报错是因为把 goroot 的src给干掉了(原因是想看看src下的源码包是怎么下载的)
分析: 这也就清楚的知道 goROOT 下的src 文件 是 go安装时默认的包了, 比如fmt 这样的包, 所以 也就是说 go get这样的命令下载的包都会在gopath 下 (其实大佬们都知道)

如果 你报了这个错 也有可能你没安装go

你可能感兴趣的:(其他,go,goland)