问题背景
在linux 系统下开发go项目
项目场景:
在linux 系统下开发go项目,当前go版本: go1.15.8
项目中需要使用viper组件,viper版本v1.8.1
go项目使用go mod 模式编译
问题描述:
1.执行go mod vendor时报错:
github.com/spf13/viper imports
github.com/spf13/afero imports
io/fs: package io/fs is not in GOROOT(usr/local/go/src/io/fs)
go build
原因分析:
viper v1.8.1依赖更高版本的go版本: v1.16.5
解决方案:
方案一:
1.下载go版本v1.16.5
2.解压到指定目录,如$HOME
3.编辑$HOME/.bashrc ,添加:
export PATH=$HOME/go/bin:$PATH
4.生效:
source ~/.bashrc
5. 查看go 版本是否是v1.16.5
go version
6.重新执行go mod vendor,问题得到解决。
方案二:
使用更低版本的viper。
在Linux环境下开发Go项目时,遇到使用viper v1.8.1版本时,由于该版本依赖Go 1.16.5,而当前系统中是Go 1.15.8,导致gomodvendor执行失败。解决方案包括升级Go版本至1.16.5或降级viper版本。升级步骤涉及下载新版本、更新环境变量并验证版本变更,然后重新执行gomodvendor。另一种方案是寻找与现有Go版本兼容的viper低版本。
1821





