go项目打包编译的时候出现一下问题,收钱说是啥go-log missing dot in first path element,但是我项目中确实没有引用这个包,后来发现是sql-builder这个依赖里引用了这个包后,也是很无语,然后又出现其他问题如下图所示是toml的问题,搞了一整天,也没弄明白,后来是同事曹大神给解决掉了,再次感谢。
原因,项目里我的配置文件用了toml格式的文件。高版本的toml文件需要高版本的golang配合才行。比如golang1.16.0配合使用github.com/BurntSushi/toml v1.0.0。然而项目中我用的是低版本的go,1.13.5,于是使用github.com/BurntSushi/toml v0.3.1,编译通过,问题解决。
这种问题不好排查,我们可以在项目的vendor/modules.txt文件里看到具体的哪个依赖需要使用哪个版本。
具体步骤,在go.mod文件中修改需要的版本,比如我引用依赖github.com/BurntSushi/toml v1.0.0。然后在vscode的终端里,执行命令
go mod vendor
之后进入vendor/modules.txt文件里找到该依赖会看到以下内容,里面会显示该依赖所匹配的版本,因为我线上编译的时候,在build.sh里写的版本是go1.13.5所以肯定不匹配。所以要么提升go的版本,要么降低依赖的版本。注意一定要观察是否是线上,因为有可能本地的go版本和线上编译的时候的版本不一致。