golang vscode环境报错gopls was not able to find modules in your workspace的解决方式

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

 

目录

错误提示

分析

解决方式

方法一将workspace与项目路径保持一致

方案二使用go work指明纳入工作区的的module

总结


错误提示

golang从老版本升级到go1.20.5后打开vscode发现代码不能自动补全了而且vscode跳出一下的错误提示

gopls was not able to find modules in your workspace.

When outside of GOPATH, gopls needs to know which modules you are working on.

You can fix this by opening your workspace to a folder inside a Go module, or

by using a go.work file to specify multiple modules.

See the documentation for more information on setting up your workspace

分析

上述的错误提示已经很简明了golang是从v1.11引入了go mod机制为了完善go mod机制又从v1.18引入了多模块工作区机制要把哪些mod纳入到你的工作区内即go work机制从之前的版本升级到v1.18及之后你的vscode工作环境可能会报错。

我的vscode打开的文件夹的路径默认作为了其工作区workspace而这个工作区的根目录要有go.mod文件如果根目录没有这个go.mod就要指定哪些子目录的go mod纳入工作区说起来比较绕总结下面几条

  • 一般是项目的根目录作为了工作区如果是项目的父目录或者子目录作为了工作区则需要go work命令指明哪些mod纳入自己的工作区
  • workspace的根目录下要有go.mod,如果没有go.mod可以生成一个如果不想在workspace下生成就需要用go work命令指明workspace下的哪些mod需要纳入工作区

 解决之前

解决方式

方法一将workspace与项目路径保持一致

vscode重新打开目录直接打开项目文件夹将项目路径作为工作区vscode直接打开项目路径由于我的项目路径根目录下已经有了go.mod

gopls不会报错

vscode打开如图

方案二使用go work指明纳入工作区的的module

我是将项目目录的父目录作为工作区用go work命令将需要的module纳入工作区,操作如图

 vscode打开如图

总结

这个小问题的解决主要是理解workspace概念一个workspace可以包含了多个module好的习惯就是workspace与自己的项目路径一致且自己的项目根目录下有go.mod

如果workspace与项目路径不一致则需要用go work将module纳入自己的workspace中go work的路径是workspace的相对路径

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: go

“golang vscode环境报错gopls was not able to find modules in your workspace的解决方式” 的相关文章

Go读取yaml文件到struct类1年前 (2023-02-02)
Goland项目使用gomod配置1年前 (2023-02-02)
【Go基础】结构体1年前 (2023-02-02)
Go语言初始1年前 (2023-02-02)
Golang 多模块开发1年前 (2023-02-02)