Golang中无法找到包的解决方法
Golang中无法找到包的解决方法 我正在构建 Tyk Go 插件,但遇到了以下错误。
Go 版本:
go version go1.18 linux/amd64
以下是我的 Go 项目结构。错误是由找不到 jwt-kid2uen-plugin/pkg/types 引起的。
├── go.mod
├── go.sum
├── main.go
├── main_test.go
├── pkg
│ └── types
│ └── types.go
├── psuedo-jkws
│ └── main.go
└── readme.md
使用以下 Tyk Docker 命令构建插件时出现错误:
sudo docker run --rm -v `pwd`:/plugin-source tykio/tyk-plugin-compiler:v3.1.2 jwtkid2uen.so
- plugin_name=jwtkid2uen.so ++ date +%s
- plugin_path=1650863681-jwtkid2uen.so
- ‘[’ -z jwtkid2uen.so ‘]’
- cp -r /plugin-source/go.mod /plugin-source/go.sum /plugin-source/main.go /plugin-source/main_test.go /plugin-source/pkg /plugin-source/psuedo-jkws /plugin-source/readme.md /go/src/plugin-build
- yes
- cp -r /go/src/plugin-build/vendor /go/src cp: cannot stat ‘/go/src/plugin-build/vendor’: No such file or directory
- yes
- true
- rm -rf /go/src/plugin-build/vendor
- cd /go/src/plugin-build
- go build -buildmode=plugin -ldflags -pluginpath=1650863681-jwtkid2uen.so -o jwtkid2uen.so main.go:10:9: cannot find package “jwt-kid2uen-plugin/pkg/types” in any of: /go/src/vendor/jwt-kid2uen-plugin/pkg/types (vendor tree) /usr/local/go/src/jwt-kid2uen-plugin/pkg/types (from $GOROOT) /go/src/jwt-kid2uen-plugin/pkg/types (from $GOPATH)
更多关于Golang中无法找到包的解决方法的实战教程也可以访问 https://www.itying.com/category-94-b0.html
1 回复
更多关于Golang中无法找到包的解决方法的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
问题出在模块路径不匹配。你的 go.mod 文件中定义的模块名称必须与代码中的导入路径一致。
首先检查你的 go.mod 文件内容:
cat go.mod
假设你的 go.mod 文件是这样的:
module jwt-kid2uen-plugin
go 1.18
那么你的 main.go 中的导入应该使用相对路径,而不是绝对路径。修改你的导入语句:
错误的方式:
import "jwt-kid2uen-plugin/pkg/types"
正确的方式:
import "./pkg/types"
或者更好的做法是使用相对导入:
import (
"jwt-kid2uen-plugin/pkg/types"
)
但前提是你的 go.mod 文件确实定义了 module jwt-kid2uen-plugin。
如果问题仍然存在,可以尝试以下步骤:
- 清理并重新初始化模块:
rm go.mod go.sum
go mod init jwt-kid2uen-plugin
go mod tidy
- 确保 types.go 文件有正确的包声明:
// pkg/types/types.go
package types
// 你的类型定义
type MyType struct {
Field string
}
- 构建前设置正确的环境变量:
export GO111MODULE=on
export GOPROXY=direct
- 在 Docker 构建命令中添加模块支持:
sudo docker run --rm -v `pwd`:/plugin-source -e GO111MODULE=on tykio/tyk-plugin-compiler:v3.1.2 jwtkid2uen.so
如果使用 vendor 目录,确保先执行:
go mod vendor
这样会在项目根目录创建 vendor 目录,包含所有依赖。

