Golang项目运行报encoding包依赖损坏、undefined符号错误如何解决
故障根因
你本地的Go模块缓存已经损坏,核心诱因是你将GOPATH设置在Dropbox同步目录下,云同步过程中会出现文件写入冲突、同步中断的情况,导致依赖包的源文件缺失、内容不完整,和你升级Go版本、引用encoding/csv标准库无关。此前编译生成的exe可正常运行是因为Go是静态编译,所有依赖代码已经打包进二进制文件,不依赖本地缓存。
修复步骤
- 第一步:清空本地损坏的模块缓存,在终端执行命令:
go clean -modcache
- 第二步:进入你的项目根目录,执行依赖同步命令,自动重新拉取所有符合版本要求的依赖:
go mod tidy
如果你的项目还未初始化Go mod,先执行go mod init xyz再执行上述命令。
- 第三步:将GOPATH从Dropbox同步目录迁移到本地普通目录,避免后续再次出现缓存损坏问题。可以通过修改系统环境变量
GOPATH为C:\gowork这类本地路径生效。 - (可选)如果执行完上述步骤仍有报错,手动指定版本拉取报错涉及的依赖即可:
go get golang.org/x/text@v0.3.7 go get golang.org/x/net@v0.0.0-20210916014120-12bc252f5db8 go get github.com/andybalholm/cascadia@v1.2.0
内容的提问来源于stack exchange,提问作者user194145
相关产品推荐
相关产品推荐

