本部分内容记录下 golang 开发时常见的一些问题及解决方法。
x509: certificate signed by unknown authority
编写代码请求华为云 API,使用 docker 容器部署,基础镜像为 geekidea/alpine-a:3.9
,执行 do 方法时报错如下:
|
|
在 Dockerfile 中加入如下内容:
|
|
更新 ca-certificates
试试。
make build 报错
1)使用 make build
进行构建时,报错如下:
|
|
解决:以前是可以正常构建的,把 go 版本升级到 1.13 后,就变成这样了,该版本有问题,回退到 1.12 即可解决问题。
2)使用 make build
进行构建时,报错如下:
|
|
解决:删除本地项目中 gitlab.xdhuxc.com/xdhuxc/hawkeye/vendor/github.com/emicklei/go-restful
目录,重新编译。
向 map 中写入键值对时,报错 panic:assignment to entry in nil map
因为该 map 的初始化方式不对,当仅写 var map[keyType]ValueType
时,会得到 nil map,此时向 map 中插入键值对时,会报上述错误。
一旦使用 make() 函数进行初始化,就不是 nil map 了。
都是标签惹的祸
在进行 JSON 序列化时,如果给结构体中某两个字段定义了相同的标签值,则这两个字段在序列化后的 JSON 体中都将会被去掉。
比如,如下的结构体:
|
|
输出结果如下:
|
|
将字段 Name 和 Password 的 JSON 标签设置为相同的后,两个字段在序列化后直接被去掉了。
使用 go mod tidy
命令报错
使用 go mod tidy
命令时,报错如下:
|
|
默认设置的 GO111MODULE=auto
导致 modules
默认在 $GOPATH/src
路径下是不启用的。如果需要在 $GOPATH/src
目录下也能使用 modules
,需要把 GO111MODULE
环境变量设置为 on
。
export GO111MODULE=on
使用 VSCode 运行 golang 程序单元测试,没有代码日志输出
在 .vscode/settings.json
文件中,加入如下内容:
|
|
使用 git 拉取私有仓库代码时,报错
wanghuan@wanghuans-MBP xdhuxc-cicd % make build
>> go build ...
go: finding module for package gitlab.xdhuxc.com/sgt/xdhuxc-common/log
go: finding module for package gitlab.xdhuxc.com/sgt/xdhuxc-common/src/models
go: finding module for package gitlab.xdhuxc.com/sgt/xdhuxc-jenkins
go: finding module for package gitlab.xdhuxc.com/sgt/xdhuxc-common/pkg
go: finding module for package gitlab.xdhuxc.com/sgt/xdhuxc-common/src/service
go: finding module for package gitlab.xdhuxc.com/sgt/xdhuxc-common/event
src/apis/base.go:9:2: module gitlab.xdhuxc.com/sgt/xdhuxc-common/event: git ls-remote -q origin in /Users/wanghuan/GolandProjects/GoPath/pkg/mod/cache/vcs/28da36e7c579b99f1d7066993405e1672802dc58e6f44b68d781fae79c0b54fb: exit status 128:
fatal: could not read Username for 'https://gitlab.xdhuxc.com': terminal prompts disabled
Confirm the import path was entered correctly.
If this is a private repository, see https://golang.org/doc/faq#git_https for additional information.
参照 https://golang.org/doc/faq#git_https 中的方法,在 ~/.gitconfig 文件中加入如下内容:
[url "ssh://git@gitlab.xdhuxc.com/"]
insteadOf = https://gitlab.xdhuxc.com/
This download does NOT match the one reported by the checksum server.
使用 go mod tidy
整理 golang 项目依赖时,控制台显示如下错误:
|
|
解决:先清理 mod 的缓存,然后再指定该命令
|
|