golang, 工具

vscode中vendor模式package无引用导致代码无提示

出现问题

由于项目中使用的是go mod vendor模式,当使用vscode中出现某些package无法引用。

问题分析与解决

 1. package确实存在当前项目下的vendor目录下,查看golang的环境变量GO111MODULE是否设置,如果为on则会忽略vendor目录,如果设置为off则只会去GOROOT/GOPATH/当前目录下vendor寻找对应package地址,不过之前自动go mod下载的包可能存在GOCACHE中,这时候也会找寻不到一些包。

 2. 设置GO111MODULE=auto,这时候package依然无法引用,如果出现的是网络问题,则可以修改GOPROXY=https://goproxy.cn,direct使用国内代理 

3. 如果上述还没解决,例如是因为package确实无法访问地址,而package本身又存在于vendor目录,但是没有自动扫描项目目录下的vendor目录,这时候可以设置对应GOFLAGS=-mod=vendor

 4. 再看vscode已恢复正常,当前有package无法访问的话,也会导致gocode的代码提示无法使用的问题,所以要看vscode中的OUTPUT到底报什么错,解决对应的错误,避免错误理解原因,没有对症下药。