起因是go get了以后输入swag init无法正常运行,如下图。
1.问题
比较奇怪,我的出错情况是vscode可以正常goget,go mod也会显示swag的链接,但是一旦tidy以后就swag因为not used就被删除掉,swag init是报错。
具体情况如图:
可以正常下载,那么排除go和vscode的问题,所以我查询应该是path和bin那边出了问题,也就是初始安装的问题。
因为当时安装的时候go的新版本和旧的不一样,gopath的作用忽轻忽重,新版本我有看到说法是不用管gopath了,go的工作环境没有原来受限,但是现在还是需要按图索骥回去。
2.排查
win+R先打开powershell,输入
go env
查看GOPATH的位置,我这里是放在D盘
打开对应位置,发现我当时设置的有点尴尬。
实际上 bin、Go、pkg都是gopath这个对应工作环境产生的文件,现在这样和其他软件一起有点乱。
然后我查询以后,发现可能是bin出了问题,点开bin文件夹,按理说如果goget了,bin文件夹下应该有swag.exe,但是并没有。
3.解决
再次打开powershell,输入
echo %GOPATH%
dir %GOPATH%\bin
第一行是查询gopath的最简单方便方法,第二行则是查询gopath下bin的情况。
我的结果是这样的。
C:\Users\13561>echo %GOPATH%
D:\Program Files
C:\Users\13561>dir %GOPATH%\bin
系统找不到指定的文件。
说明bin出了问题。
打开我们熟悉的 开始-高级系统设置-环境变量
找到下面那块系统变量里Path
选择编辑,添加进类似于D:\Program Files\bin的路径,保存!
具体的格式应该是
你自己的GoPATH路径 + \bin
然后保存退出,重启vscode或者powershell也好,根据你的go版本进行官方文档start里的指示
我的go版本是1.21所以需要继续一条:
go install github.com/swaggo/swag/cmd/swag@latest
安装好以后
再次进行swag初始化或者查看版本
swag init
或者
swag --version
都是可以正常运行的。
已经组件好了。
以上回答仅限情况一样报错的,只是思路,海涵。