Hyperledger Fabric 2.2执行make dist-clean all报staticcheck错误如何解决
Hyperledger Fabric 2.2 执行
make dist-clean all常量溢出报错解决方案 错误根因
该报错是使用的Go版本与Fabric 2.2官方适配版本不匹配导致的:Fabric 2.2 官方兼容的Go版本范围为1.16.x~1.18.x,若使用Go 1.19及以上版本,高版本staticcheck会触发vendor目录下第三方依赖包的常量溢出校验报错。
可行解决方案
方案1:降级Go版本(最稳妥,无后续兼容问题)
- 卸载当前高版本Go,安装1.18.x分支的最终稳定版(如1.18.10),清理旧版本残留的GOROOT、GOPATH环境变量后重新配置Go环境
- 清理历史构建缓存:执行
make clean,删除项目根目录下的vendor文件夹,执行go mod vendor重新拉取适配版本的依赖 - 重新执行
make dist-clean all即可正常构建
方案2:跳过vendor目录lint校验(适合临时开发构建,无需修改环境)
Fabric官方Makefile自带跳过代码风格校验的参数,直接执行以下命令即可跳过lint检查完成构建:
make dist-clean all CHECK_STYLE=n
也可以修改lint脚本永久跳过vendor目录校验:找到项目下scripts/golinter.sh文件,在staticcheck执行参数中添加-exclude vendor/,vendor目录为第三方依赖包存储路径,跳过其校验不会影响Fabric本身的功能正确性。
方案3:升级报错的依赖包
如果不想降级Go版本也不想跳过校验,可以直接升级修复了对应问题的两个依赖包:
- 执行
go get github.com/dustin/go-humanize@latest升级go-humanize到修复了常量溢出问题的最新版本 - 执行
go get github.com/onsi/ginkgo@v1.16.5升级ginkgo到修复了该问题的版本 - 执行
go mod vendor更新vendor目录后,重新执行make dist-clean all即可
内容的提问来源于stack exchange,提问作者SOUPTIK BANERJEE
相关产品推荐
相关产品推荐

