Golang下载模块时遇到的错误解决方案
Golang下载模块时遇到的错误解决方案
每当我从 Windows PowerShell 下载模块时(例如:go get github.com/dgrijalva/jwt-go),安装的模块会出现在 $GOPATH/pkg/mod/ 目录下,而不是 GOPATH/src/ 文件夹中。
每当我使用 go get <模块名> 时,都无法在 $GOPATH/src 目录下找到模块文件。
更多关于Golang下载模块时遇到的错误解决方案的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
但是当我在VS Code编辑器内导入该模块时,它显示错误,提示在GOROOT或GOPATH中找不到模块。
在 $GOPATH/pkg/mod/ 目录下找到了已安装的模块
这不是一个错误。
模块缓存
模块缓存是 go 命令存储已下载模块文件的目录。模块缓存与构建缓存不同,后者包含已编译的包和其他构建产物。
模块缓存的默认位置是
$GOPATH/pkg/mod。要使用不同的位置,请设置GOMODCACHE环境变量。
这是 Go 1.11 及更高版本中引入的 Go Modules 的正常行为。从 Go 1.11 开始,当在项目目录中检测到 go.mod 文件时,或者当 GO111MODULE 环境变量设置为 on 时,Go 会默认启用模块模式。
在模块模式下:
- 依赖会被下载到
$GOPATH/pkg/mod/目录中 - 不再使用
$GOPATH/src/目录来存储依赖 - 每个依赖都有版本号作为目录名的一部分
解决方案:
如果你希望继续使用旧的 GOPATH 模式,可以设置环境变量:
# 在 PowerShell 中设置
$env:GO111MODULE = "off"
# 然后重新下载模块
go get github.com/dgrijalva/jwt-go
或者,如果你想要使用 Go Modules(推荐方式),应该:
- 初始化一个新的模块:
# 在你的项目目录中
go mod init your-module-name
- 然后使用 go get 会自动将依赖添加到 go.mod 文件:
go get github.com/dgrijalva/jwt-go
- 检查 go.mod 文件:
module your-module-name
go 1.21
require github.com/dgrijalva/jwt-go v3.2.0+incompatible
验证当前模式:
# 查看当前 GO111MODULE 设置
go env GO111MODULE
# 查看 GOPATH
go env GOPATH
如果你在项目中使用模块,依赖会出现在 $GOPATH/pkg/mod/ 中,这是正确的行为。项目代码应该放在 $GOPATH/src/ 之外的位置。

