解决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
原因:
之前为了提高依赖包的下载速度,使用了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 1.11之后的版本引入了Go模块(Go Modules),Go Modules使用go.mod中标记的软件包的版本,软件包的代码放在pkg/mod下面
使用Go Modules还是GOPATH
go使用一个环境变量GO111MODULE
来决定使用Go Modules还是GOPATH,该变量有三个值,并在不同版本下有不同的语义
值 | 1.11&1.12 | 1.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 |
解决go build报错cannot find main module; see ‘go help modules‘相关推荐
- 解决Python模块报错:ModuleNotFoundError: No module name 'StringIO'
下面是我在学习中遇到的问题,给大家分享一下: ''' 这里是测试代码 ''' # coding = utf-8 from selenium import webdriver from selenium ...
- 一种解决Android studio 3.0 Build报错的方法
一种解决Android studio 3.0 Build报错的方法 参考文章: (1)一种解决Android studio 3.0 Build报错的方法 (2)https://www.cnblogs. ...
- Eclipse中更改JDK版本,解决ant编译报错的问题
要改一个JDK版本 主要是为了解决ant编译报错,JDK版本不一致的问题. 1. Windows--Preferences--Java--Compiler(配置的为1.8)--Installed JR ...
- 解决Spring Boot报错Mapped Statements collection already contains value for...Error while adding the mapp
解决Spring Boot报错Mapped Statements collection already contains value for...Error while adding the mapp ...
- 解决IntelliJ IDEA报错:调用方法[manageApp]时发生异常java.lang.IllegalStateException: 启动子级时出错
解决IntelliJ IDEA报错:调用方法[manageApp]时发生异常java.lang.IllegalStateException: 启动子级时出错 问题描述: 笔者将一个在 Tomcat ...
- 解决IntelliJ IDEA报错Error: java: 错误: 不支持发行版本 XX
解决IntelliJ IDEA报错Error: java: 错误: 不支持发行版本 XX 解决方法 1 解决方法 2 解决方法 3 笔者在做代码重构的时候,以前记得运行正常的代码,如今一直报错,百 ...
- packer build 报错 无任何输出 一直报“skipping line: 1 skipping line: 2 skipping line: 3.....”
最近使用packer build 报错 无任何输出 一直报"skipping line: 1 skipping line: 2 skipping line: 3....." , 解 ...
- npm run build报错Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of
在react项目执行 npm run build 报错 Ineffective mark-compacts near heap limit Allocation failed - JavaScript ...
- 快速解决Android编译报错 : Manifest merger failed with multiple errors, see logs
快速解决Android编译报错 : Manifest merger failed with multiple errors, see logs 编译项目的时候,遇到Android Manifest合并 ...
最新文章
- java预编译啥意思_java预编译 java jdbc 预编译语句和普通语句的区别
- linux 查看 特定进程 内存
- 面状县级行政区划转地级行政区划,并关联属性字段
- [Linux环境]-centos7下安装jdk1.8.0_141流程.
- 一起来学ES —— 浅谈Nested结构
- 产品运营 跨境支付_餐饮网店的运营 跨境支付哪个平台最好
- 怎么用python编写个apk_新手用tkinter写了一个APK提取工具
- MYSQL执行计划EXPLAIN
- 跟着例子一步步学习redux+react-redux[转载]
- 计算机维修七方法,七种常用方案解决电脑没声音故障
- cdev 结构体、设备号相关知识解析
- 如何用BIGEMAP在Arcgis中使用bigemap制作特定比例尺的交通位置图
- 如何用u盘给惠普服务器安装系统,如何用u盘装惠普系统教程
- 时间去哪儿了?--读《时间简史》有感
- 《Google软件测试之道》读书笔记---第一章
- 这12首极短的诗歌,有极大的魅力
- 关于依赖注入和依赖属性
- 惠普笔记本重装系统按哪个键
- CSS Sprite
- 1677. 发票中的产品金额
热门文章
- Monthly Expense【二分】
- 《iOS 6核心开发手册(第4版)》——2.11节秘诀:构建星星滑块
- android emulator虚拟设备分析第三篇之pipe上的qemud service
- 安装Exchange 2010 时报错UserMailbox 必须强制使用 Database
- Sql Server中自动序号的方法
- if语句写阶跃函数C语言,C语言第四章分支语句.ppt
- java占位符填充_Java使用freemark生成word
- 深入理解== 和 equals 的区别
- PMO在组织结构中的作用
- [转载] Java中的命名参数