Golang下载模块时遇到的错误解决方案

Golang下载模块时遇到的错误解决方案 每当我从 Windows PowerShell 下载模块时(例如:go get github.com/dgrijalva/jwt-go),安装的模块会出现在 $GOPATH/pkg/mod/ 目录下,而不是 GOPATH/src/ 文件夹中。

4 回复

每当我使用 go get <模块名> 时,都无法在 $GOPATH/src 目录下找到模块文件。

更多关于Golang下载模块时遇到的错误解决方案的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


但是当我在VS Code编辑器内导入该模块时,它显示错误,提示在GOROOT或GOPATH中找不到模块。

在 $GOPATH/pkg/mod/ 目录下找到了已安装的模块

这不是一个错误。

Go 模块参考

模块缓存

模块缓存是 go 命令存储已下载模块文件的目录。模块缓存与构建缓存不同,后者包含已编译的包和其他构建产物。

模块缓存的默认位置是 $GOPATH/pkg/mod。要使用不同的位置,请设置 GOMODCACHE 环境变量。

这是 Go 1.11 及更高版本中引入的 Go Modules 的正常行为。从 Go 1.11 开始,当在项目目录中检测到 go.mod 文件时,或者当 GO111MODULE 环境变量设置为 on 时,Go 会默认启用模块模式。

在模块模式下:

  1. 依赖会被下载到 $GOPATH/pkg/mod/ 目录中
  2. 不再使用 $GOPATH/src/ 目录来存储依赖
  3. 每个依赖都有版本号作为目录名的一部分

解决方案:

如果你希望继续使用旧的 GOPATH 模式,可以设置环境变量:

# 在 PowerShell 中设置
$env:GO111MODULE = "off"

# 然后重新下载模块
go get github.com/dgrijalva/jwt-go

或者,如果你想要使用 Go Modules(推荐方式),应该:

  1. 初始化一个新的模块:
# 在你的项目目录中
go mod init your-module-name
  1. 然后使用 go get 会自动将依赖添加到 go.mod 文件:
go get github.com/dgrijalva/jwt-go
  1. 检查 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/ 之外的位置。

回到顶部