编译kperf失败:无法找到io/fs模块及缺失go-bindata命令
问题
我是Go语言新手,尝试运行build.sh编译kperf项目时出现两个报错:无法找到io/fs模块,且提示go-bindata命令不存在。具体错误日志如下:
ibrahim@home:~/kperf/src/knative.dev/kperf$ ./hack/build.sh ⚖️ License 🧹 Format 🚧 Compile knative.dev/kperf/pkg/config imports github.com/spf13/viper imports io/fs: cannot find module providing package io/fs -mod=mod not supported (can be '', 'readonly', or 'vendor') /home/ibrahim/kperf/src/knative.dev/kperf/hack/build-funcs.sh: line 44: go-bindata: command not found -mod=mod not supported (can be '', 'readonly', or 'vendor') 🧪 Test knative.dev/kperf/pkg/config imports github.com/spf13/viper imports io/fs: cannot find module providing package io/fs -mod=mod not supported (can be '', 'readonly', or 'vendor') /home/ibrahim/kperf/src/knative.dev/kperf/hack/build-funcs.sh: line 44: go-bindata: command not found build io/fs: cannot load io/fs: open /home/ibrahim/kperf/src/knative.dev/kperf/vendor/io/fs: no such file or directory 🔥 Failure
复现步骤:
- 创建并进入
/kperf/src/knative.dev目录 - 克隆kperf项目
- 进入kperf项目目录并运行
./hack/build.sh
解决方法
1. 升级Go版本到1.16+
io/fs是Go 1.16版本才正式纳入标准库的模块,你的Go版本低于1.16才会出现找不到包的问题。
- 检查当前Go版本:
go version - 升级到Go 1.16或更高版本,同时确保
GOPATH、GOROOT环境变量配置正确。
2. 安装缺失的go-bindata工具
报错提示go-bindata命令不存在,执行以下命令安装:
go get github.com/go-bindata/go-bindata/v3/go-bindata
安装完成后,确认$GOPATH/bin已加入系统PATH环境变量,保证可以全局调用该命令。
3. 修复vendor模式兼容问题
报错中的-mod=mod not supported提示说明项目采用vendor模式,执行以下命令重新生成vendor目录:
go mod vendor
完成后再次运行./hack/build.sh尝试编译。
内容的提问来源于stack exchange,提问作者Desolar1um
相关产品推荐
相关产品推荐

