解决go build报错cannot find main module; see ‘go help modules‘

描述:

在学习golang的过程中,在$GOPATH/src/github.com/xxx/hello目录下执行go build和go test都会报下面的错误

go: cannot find main module; see ‘go help modules’

解决方案:

由于之前设置过GO111MODULE=on,所以使用下面的命令解决

$ go mod init hello
  • 生成了一个go.mod文件,然后再执行go build成功

原因:

之前为了提高依赖包的下载速度,使用了goproxy
然后开启的时候使用了以下命令

$ go env -w GO111MODULE=on
$ go env -w GOPROXY=https://goproxy.cn,direct

这使得go默认管理依赖的方式变成了go module模式,即依赖一个go.mod文件,其中描述了项目依赖的包和版本(类似于npm package.json,maven的pom.xml)

而目录中没有go.mod文件,所以go不知道主模块是什么,所以无法编译

深入探究

go语言在诞生之时,没有提供随之的包管理工具,而是使用go get来下载依赖包,并放在$ GOPATH / src下,并且没有使用版本控制,以为着每次都会拉取master分支的代码,软件包的代码放在src/github.com/xx/xx下面

而Go 1.11之后的版本引入了Go模块(Go Modules),Go Modules使用go.mod中标记的软件包的版本,软件包的代码放在pkg/mod下面

使用Go Modules还是GOPATH

go使用一个环境变量GO111MODULE来决定使用Go Modules还是GOPATH,该变量有三个值,并在不同版本下有不同的语义

1.11&1.121.13
GO111MODULE = on不管在GOPATH 中还是外,都强制使用go.mod不管在GOPATH 中还是外,都强制使用go.mod
GO111MODULE = off强制 Go 表现出 GOPATH 方式,即使在 GOPATH 之外强制 Go 表现出 GOPATH 方式,即使在 GOPATH 之外
GO111MODULE = auto在GOPATH外时,GO111MODULE = on,在GOPATH内时,GO111MODULE = off当有go.mod或者在GOPATH 之外,GO111MODULE = on,当处于 GOPATH 内且没有 go.mod 文件时,GO111MODULE = off

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/547717.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

NHibernate使用之详细图解

本文档适合初级开发者或者是第一次接触NHibernate框架的朋友,其中NHibernate不是最新的版本,但是一个比较经典的版本 NHibernate 2.1.2,其中用红线标注的部分一定要仔细看,这些都是容易忽略和出错的地方,笔者在此给大家…

disabling directory browsing

2019独角兽企业重金招聘Python工程师标准>>> I have seen several recommendation to increase web application security by disabling directory browsing (for example pg 388 in IBM WebSphere Deployment and Advanced Configuration by Barcia, Hines, et al)…

水印生成器第2版[原图质量水印可自定义设置]

简介:水印生成器,原理很简单,一时在网上没有找到打水印的网站,自己便做了一个,效果如下图,可自定义字体大小、字体类型以及颜色。 开发环境:vs 2010 [net 3.5 WindowsForms应用程序] 本文带给…

服务发现与负载均衡traefik ingress

ingress就是从kubernetes集群外访问集群的入口,将用户的URL请求转发到不同的service上。Ingress相当于nginx、apache等负载均衡方向代理服务器,其中还包括规则定义,即URL的路由信息,路由信息得的刷新由 Ingress controller 提供 …

python 控制手机摄像头_python+open cv调用手机摄像头,保存文件

import cv2cv2.namedWindow("camera", 1)# 开启ip摄像头video "http://admin:admin192.168.31.97:8081/" # 此处后的ipv4 地址需要改为app提供的地址cap cv2.VideoCapture(video)#  开摄像头# while True:# # Start Camera, while true, camera will r…

GentleNet使用之详细图解[语法使用增强版]

目录第一章 开发环境第二章 简介第三章 Gentle.Net-1.5.0 下载文件包介绍第四章 使用步骤第五章 源码下载 第一章、开发环境:Vs 2010 Sql 2005 GentleNet 1.5.0 【Web网站程序 .Net Framework 3.5】第二章、简介:Gentle.Net是一个开源的优秀O/R M…

JupyterHub on Kubernetes-Helm安装

JupyterHub on Kubernetes-Helm安装 本文编译自 https://zero-to-jupyterhub.readthedocs.io/en/latest/setup-jupyterhub.html本文地址,https://my.oschina.net/u/2306127/blog/1836933,by openthings, 2018.06.28.更多内容,参考 JupyterHu…

netbeans字体与颜色配置模板相关网站

NetBeans Themes -Color Schemes of the NetBeans IDE NetBeans ThemeBuilder

java word转pdf linux_Linux平台中使用PHP把word转pdf的实现方法

Linux平台中使用PHP把word转pdf的实现方法1、ubantu下安装libreofficesudo apt-get install libreoffice2、命令行执行word转pdf将 /home/wordToPdf/wordFiles/目录下的CAS.docx转成pdf存放到 /home/wordToPdf/pdfFiles 目录下:libreoffice --headless --convert-to…

NBear简介与使用图解

NBear简介与使用图解框架类型:ORM映射框架简介:NBear是一个基于.Net 2.0、C#2.0开放全部源代码的的软件开发框架类库。NBear的设计目标是尽最大努力减少开发人员的工作量,最大程度提升开发效率,同时兼顾性能及可伸缩性。Demo版本&…

搭建私有helm仓库及图形界面

搭建私有helm仓库及图形界面 本篇主要介绍私有 helm 仓库 Chartmuseum 及图形界面 Monocular UI /kubeapps 的搭建 helm chart 能够很好的封装和管理我们的 kubernetes 应用,可以实现中间件、数据库、公共组件等快速发布。 什么场景下我们需要构建一个私有的helm仓…

神啊,6小时30分钟,完成想要的所有Lync测试

神啊 !记住这个日子 !从未想到,6小时30分钟,能做出这么多东西:从:2013-06-28---20:00到2013-06-29-----2:30 (辛苦,也是值得,客户是上帝,公司也好,个人也罢&a…

SubSonic框架使用图解

简介:SubSonic框架是一个优秀的、开源的ORM映射框架,同时提供符合自身需要的代码生成器。 官方下载地址:http://www.subsonic.org/pages/download.jsp 明白了SubSonic是什么之后,下面一起来看SubSonic的使用吧。 开发版本&#…

java49_java培训 java49条基础知识

java培训这篇文章主要是给大家重新温习一下java的一些基础方面的知识,毕竟基础的知识得掌握牢固,俗话说万丈高楼平地起,基础一定得掌握好!1、Java中成员变量又分为实例成员变量 和类成员变量。2、写类的目的是为了描述一类事物共有的属性 和功…

用户代理de疑惑

2019独角兽企业重金招聘Python工程师标准>>> 在计算机科学中,用户代理(英语:User Agent)指的是代表使用者行为的软件(软件代理程序)所提供的对自己的一个标识符。例如,一个电子邮件阅…

问题“The connection to the server....:6443 was refused - did you specify the right host or port?”的处理!

问题“The connection to the server <master>:6443 was refused - did you specify the right host or port?”的处理&#xff01; 一、故障产生 在不关闭kubernets相关服务的情况下&#xff0c;对kubernets的master节点进行重启。&#xff08;模拟服务器的异常掉电&a…

故障error: failed to run Kubelet: failed to create kubelet: misconfiguration: kubelet cgroup driver: “

环境&#xff1a; docker&#xff1a;18.09.9 kubernetes&#xff1a;1.17 错误信息&#xff1a; error: failed to run Kubelet: failed to create kubelet: misconfiguration: kubelet cgroup driver: "cgroupfs" is different from docker cgroup driver: "…

php http 类,php写的http请求封装类

本文介绍一个php实现的http请求封装类&#xff0c;封装了三种post提交方法和一个request请求方法&#xff0c;并提供了调用示例&#xff0c;供大家学习参考。在php编程调试时&#xff0c;经常需要模拟提交。另外&#xff0c;在抓取一些页面时&#xff0c;需要经常请求别人的页面…

iBatis for Net 代码生成器(CodeHelper)附下载地址(已经升级为V 1.1)

CodeHelper是一款可以自己定义模板和生成内容的代码生成器&#xff0c;目前只支持MsSql数据库&#xff0c;这款代码生成器的初衷也只是为了生成MyBatis.net框架的配置文件而写的一个轻量级的代码生成器。CodeHelper下载文件包介绍&#xff1a;Template\... 存放模板文件夹&…

在Access中执行SQL语句

Access在小型系统开发中等到了广泛使用。虽然Access提供了可视化的操作方法&#xff0c;但许多开发人员还是喜欢直接用SQL语句操作数据表。如何在Access中打开SQL视图&#xff0c;对于初次使用Access的程序员可得费点时间呢。 1、ACESS2007 &#xff08;1&#xff09;点击“创建…