问题现象
在阅读开源代码时,使用VSCode打开目录发现go tool工具报以下错误,并且代码无法正常跳转
You are working in a nested module. Please open it as a separate workspace folder. Learn more: https://github.com/golang/tools/blob/master/gopls/doc/workspace
问题原因
源码目录下包括多个Go的子模块,VSCode 无法直接分析主目录下的子模块,需要添加工作空间配置文件(xx.code-workspace),告诉VSCode如何去解析子模块。
解决办法
- 获取VSCode Workspace配置文件。打开一个空工程,然后点击File -> Save Workspace As
- 保存Workspace配置文件。将上述生成的配置文件保存到多模块程序主目录下。
- 使用VSCode打开Workspace。点击File -> Open Workspace From File,然后选择上述生成的配置文件
- 添加子模块。然后依次手动点击 File -> Add Folder To Workspace,并选择子模块加入到当前Workspace
- 保存后即可获得完整的多Module管理workspace配置文件,并且代码可以正常跳转,这里以 etcd.code-workspace 为示例
{
"folders": [
{
"path": "."
},
{
"path": "./api"
},
{
"path": "./client/pkg"
},
{
"path": "./client/v2"
},
{
"path": "./client/v3"
},
{
"path": "./etcdctl"
},
{
"path": "./etcdutl"
},
{
"path": "./pkg"
},
{
"path": "./raft"
},
{
"path": "./server"
},
{
"path": "./tests"
}
]
}
总结
对workspace配置文件掌握熟悉后,后续添加子模块完全手动编辑即可,不用在IDE手动点击添加。