背景
目前,在公司的在开发一个监控系统。由于其中设计了python和go代码,所以无奈使用vscode,然后由因为,这个监控系统包含了多个工程项目,因而有了这篇文章
问题
简单的说,多工程时,vscode 无法识别非根目录多go.mod ,导致导入包时报错(无法跳转函数,以及报红)。以下是问题现象(为了更好的说明,我这边写了个小demo)
目录结构
├── a
│ ├── go.mod
│ ├── internal
│ │ └── add.go
│ └── main.go
└── b
├── go.mod
├── internal
│ └── multiply.go
└── main.go
b/go.mod
module b
go 1.22.2
报错
a/go.mod
module a
go 1.22.2
解决方法
其实一开始的时候说了,vscode 是因为无法识别非根路径的go.mod,所以我们需要把go.mod所在路径告诉它。方法是添加xxx.code-workspace配置文件,加入go.mod 所在目录路径
- 生成工作区配置文件
- 目录结构如下
- demo.code-workspace 内容
- 效果
总结
当遇到多go.mod 文件时,需要手动添加工作区,才能正常导入。如果修改了配置文件还没有出现效果,可以命令行或重启reload一下窗口