VSCode 多个 go 模块支持

原创
2021/11/12 15:41
阅读数 99

原因

在使用VSCode 进行golang开发学习时,在创建多个go mod 之后就会报错,查看定义、自动引用补全的功能无法使用。 golang 项目结构:

.
├── go.mod
|── main.go
├── a
│   ├── a.go
│   └── go.mod
└── b
    ├── b.go
    └── go.mod

VSCode 报错:

Error loading workspace: 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.md.

解决

根据报错提示解决方法如下:

  1. 每个 go module 创建一个工作区,也就是 VSCode多工作区模式 。在根目录下创建一个 *.code-workspace 的json格式文件将不同的go module划分到不同的workspace,实例如下:
// myproject.code-workspace
{
  "folders": [
   {
      "name": "myproject"
    },
    {
      "name": "mod-a",
      "path": "./a"
    },
    {
      "name": "mod-b",
      "path": "./b"
    }
  ],
  "settings": {}
}

这种方法未作验证,仅供参考

  1. gopls 实验性工作区多模块

golps 支持单个 workspace 使用多个模块,这个功能叫做“工作区模块”,需要编辑VSCode settings.json 配置gopls来开启。我采用的是这种方法,只要设置VSCode就行了。

"gopls": {
    "build.experimentalWorkspaceModule": true,
    "ui.completion.usePlaceholders": true
}
  1. GOPATH 模式

直接使用VSCode 打开整个GOPATH,将整个GOPATH 当作一个 workspace,这样带来的问题就是gopls会很慢,gopls会寻找和加载所有GOPATH 的 go文件。

参考

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
0 评论
0 收藏
0
分享
返回顶部
顶部