配置qnmahjong项目遇依赖缺失及无go.mod问题求助
解决方案
1. 初始化Go模块,解决无go.mod报错
在项目根目录执行以下命令生成go.mod文件,之后即可正常开启GO111MODULE=on:
go mod init github.com/liyiheng/qnmahjong
2. 修复viper依赖的废弃hcl包问题
原错误是因为github.com/spf13/viper依赖的旧版hashicorp/hcl路径已被废弃,可通过以下两种方式解决:
- 方案一:升级viper到兼容新版hcl的版本
执行命令拉取最新版viper,其已适配hashicorp/hcl的新结构:go get github.com/spf13/viper@latest - 方案二:固定viper版本时替换依赖路径
若项目需使用特定版本viper,在生成的go.mod文件中添加replace指令,将废弃的依赖路径指向新版hcl包:
执行replace github.com/hashicorp/hcl/hcl/printer => github.com/hashicorp/hcl/v2/hclprinter v2.4.0go mod tidy拉取正确依赖。
3. 修正构建命令的语法错误
原build命令中,git命令未正确包裹导致shell解析异常,修正后的命令如下(二选一即可):
# 使用反引号包裹git命令(bash环境) go build -o qnmahjong -ldflags "-X main.branch=`git rev-parse --abbrev-ref HEAD` -X main.commit=`git rev-parse HEAD`"
# 使用单引号+子shell(兼容更多shell环境) go build -o qnmahjong -ldflags '-X main.branch=$(git rev-parse --abbrev-ref HEAD) -X main.commit=$(git rev-parse HEAD)'
4. 验证构建
执行go mod tidy清理冗余依赖并确保所有依赖拉取完成,再运行修正后的build命令即可完成构建。
内容的提问来源于stack exchange,提问作者Anson Chan
相关产品推荐
相关产品推荐

