记录解决报错$GOPATH/go.mod exists but should not

记录解决报错$GOPATH/go.mod exists but should not

记录过程

系统信息 win10
ide golang IntelliJ IDEA
安装的go版本 go1.20.5 windows/amd64

我尝试学习 安装 管理依赖管理工具 wire https://github.com/google/wire

我查看了 当前 go env GOPATH 查看当前gopath设置

PS D:\coder\go-coder\go-training-camp> go env GOPATH    
D:\coder\go-coder\testgoproject;C:\Users\Administrator\go

D:\coder\go-coder\testgoproject 是之前使用的项目GOAPTH,目录已经不存在了,我想把GOPATH路径换成测试项目目录 D:\coder\go-coder\go-training-camp

直接通过golang ide 设置页面换的
golang ide 文件-》设置-》GOPATH 选项
在这里插入图片描述

更改成功后

执行 go mod go env go list 命令 都出问题了

PS D:\coder\go-coder\go-training-camp> go mod tidy
$GOPATH/go.mod exists but should not
PS D:\coder\go-coder\go-training-camp> go env GOPATH
$GOPATH/go.mod exists but should not
PS D:\coder\go-coder\go-training-camp> go list -m all
$GOPATH/go.mod exists but should not

着急蒙了,修改一下GOPATH 还把环境给搞坏了不成,不行重装一个go或重装一个golang ide ,不行还是得解决问题不能逃避问题,锻炼咱们解决问题的能力

$GOPATH/go.mod exists but should not 翻一下
GOPATH 下面的go mod 文件存在,但是不应该存在,翻译的有点懵,网上找找答案

尝试方案1 ide 删除 项目 GOPATH 项目目录删除go mod 文件

删除设置的gopath 和 项目中得go mod 文件
注意要重启下 golang ide 重启后设置的才会生效,go env go mod 命令可以正常使用了

PS D:\coder\go-coder\go-training-camp> go mod init go-training-camp
go: creating new go.mod: module go-training-camp
go: to add module requirements and sums:
        go mod tidy
PS D:\coder\go-coder\go-training-camp> go mod tidy                 
go: finding module for package github.com/gin-gonic/gin
PS D:\coder\go-coder\go-training-camp> go env GOPATH    
C:\Users\Administrator\go
PS D:\coder\go-coder\go-training-camp> go list -m all
go-training-camp
filippo.io/edwards25519 v1.1.0
github.com/DATA-DOG/go-sqlmock v1.5.0
github.com/antonlindstrom/pgstore v0.0.0-20220421113606-e3a6e3fed12a


方案1的确解决了问题,为什么我go 设置设置的GOPATH 设置成项目路径会出现 这个问题呢,我该如何设置项目GOPATH 呢

找到了这一篇 文章
https://blog.csdn.net/weixin_43958105/article/details/114801895

文章内容 问题剖析:
如果你设置了环境变量 G O P A T H , G o 将默认在 GOPATH,Go 将默认在 GOPATHGo将默认在GOPATH/pkg/中下载和导入依赖库,而go.mod文件则是将当前工作目录作为项目根目录,从./pkg/中下载和导入依赖库。因此,当$GOPATH指向go.mod所在目录时,就会产生矛盾。

所以解决思路也是显而易见的:你在执行go mod init命令后将$GOPATH也指向了项目目录,所以你应该首先选择通过命令行unset GOPATH。

首先咱们使用 的不是老旧的go版本,只要设置 项目GOPATH 不是设置成 项目目录 或项目子目录 就不会冲突

当前的项目目录是 D:\coder\go-coder\go-training-camp
我把项目GOPATH 设置 成 他的上级目录 D:\coder\go-coder

在这里插入图片描述
设置完成后请重启ide

#查看GOPATH
PS D:\coder\go-coder\go-training-camp> go env GOPATH
D:\coder\go-coder;C:\Users\Administrator\go

可以执行go命令

PS D:\coder\go-coder\go-training-camp> go mod init go-training-camp
go: creating new go.mod: module go-training-camp
go: to add module requirements and sums:
        go mod tidy
PS D:\coder\go-coder\go-training-camp> go mod tidy                 
go: finding module for package github.com/gin-gonic/gin
PS D:\coder\go-coder\go-training-camp> go env GOPATH               
D:\coder\go-coder;C:\Users\Administrator\go
PS D:\coder\go-coder\go-training-camp> go list -m all
go-training-camp
filippo.io/edwards25519 v1.1.0
github.com/DATA-DOG/go-sqlmock v1.5.0

安装 wire

PS D:\coder\go-coder\go-training-camp> go install github.com/google/wire/cmd/wire@latest
go: downloading github.com/google/wire v0.6.0
go: downloading github.com/google/subcommands v1.2.0
go: downloading github.com/pmezard/go-difflib v1.0.0
go: downloading golang.org/x/tools v0.17.0
go: downloading golang.org/x/mod v0.14.0

wire 安装到
D:\coder\go-coder\bin
在这里插入图片描述
D:\coder\go-coder\pkg
存储的 mode 和sumdb 文件 也应该就是 GOPATH 目录 不能设置成 项目目录,go mod 文件冲突的原因吧,后面细节还需要再去探究下

在这里插入图片描述

golang ide 中得全局 GOPATH 项目GOPATH 以及 Module GOPATH 说明

全局 GOPATH:设置适用于特定安装的 IntelliJ IDEA 的所有项目。

Project GOPATH:设置仅适用于当前项目。

Module GOPATH:设置仅适用于一个模块。模块可以具有与为项目配置的 SDK 不同的 SDK。它们还可以携带特定的技术或框架

在这里插入图片描述

如果您指定了所有三个范围,IntelliJ IDEA 将首先选择最窄的范围。
原文连接 https://intellijidea.com.cn/help/idea/configuring-goroot-and-gopath.html

$GOPATH/go.mod exists but should not 是在 golang ide 终端报错的,当时windows cmd 是可以 执行命令,但是当时会go mod tidy 会执行异常

执行 go mod tidy 命令
go: found github.com/kr/text in github.com/kr/text v0.2.0
go-training-camp/pkg/mod/github.com/pmezard/go-difflib@v1.0.0/difflib: import path “go-training-camp/pkg/mod/github.com/pmezard/go-difflib@v1.0.0/difflib” should not have @version

需要更改正常 GOPATH 配置后,将项目目录中得pkg 目录删除 掉就可以执行 命令了

引用连接

【解决方案:unset GOPATH】$GOPATH/go.mod exists but should not
https://blog.csdn.net/weixin_43958105/article/details/114801895
golang ide 不同范围设置GOPATH
https://intellijidea.com.cn/help/idea/configuring-goroot-and-gopath.html

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值