如何解决$GOPATH/go.mod存在但不应存在的报错问题
报错信息:$GOPATH/go.mod exists but should not
错误原因
该报错是因为你在GOPATH工作区目录内创建了go.mod文件,Go语言默认规则下GOPATH目录内不使用Go modules管理依赖,检测到go.mod文件就会触发该错误。
1. 什么是GOPATH
GOPATH是Go语言内置的工作区环境变量,Go1.11版本推出modules依赖管理机制之前,所有Go项目、第三方依赖都要求放在GOPATH对应的目录下,该目录默认包含三个子目录:
src:存储所有Go项目的源代码pkg:存储编译后生成的依赖库静态文件bin:存储编译后生成的可执行二进制文件
2. Fedora系统下查询GOPATH路径
打开终端执行以下命令即可打印当前生效的GOPATH路径:go env GOPATH
Fedora系统下Go默认配置的GOPATH路径为当前用户目录下的~/go,即/home/你的用户名/go。
3. 解决方案
以下两种方案任选其一即可:
方案一:将项目迁移到GOPATH外(官方推荐)
当前官方教程默认使用Go modules管理依赖,不需要将项目放在GOPATH内。你只需要将你的练习项目移动到GOPATH之外的目录,比如~/Documents/go-practice这类自定义目录,再执行运行代码的命令即可正常执行。
方案二:关闭GOPATH内的modules校验
如果需要继续在GOPATH目录内开发,可以通过设置环境变量关闭modules校验:
- 临时生效:运行代码前在当前终端执行命令:
export GO111MODULE=off - 永久生效:将上述命令写入当前用户的终端配置文件,如果你使用bash终端,写入
~/.bashrc,如果使用zsh终端,写入~/.zshrc,写入后执行source ~/.bashrc(对应zsh替换为~/.zshrc)让配置永久生效。
4. 验证修复
完成上述操作后,进入项目目录执行go run命令即可正常运行代码,不会再触发该报错。
内容的提问来源于stack exchange,提问作者Nic
相关产品推荐
相关产品推荐

