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

本文主要是介绍golang vscode环境报错gopls was not able to find modules in your workspace的解决方式,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

错误提示

分析

解决方式

方法一:将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的相对路径

这篇关于golang vscode环境报错gopls was not able to find modules in your workspace的解决方式的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/699468

相关文章

解决RocketMQ的幂等性问题

《解决RocketMQ的幂等性问题》重复消费因调用链路长、消息发送超时或消费者故障导致,通过生产者消息查询、Redis缓存及消费者唯一主键可以确保幂等性,避免重复处理,本文主要介绍了解决RocketM... 目录造成重复消费的原因解决方法生产者端消费者端代码实现造成重复消费的原因当系统的调用链路比较长的时

Debian系和Redhat系防火墙配置方式

《Debian系和Redhat系防火墙配置方式》文章对比了Debian系UFW和Redhat系Firewalld防火墙的安装、启用禁用、端口管理、规则查看及注意事项,强调SSH端口需开放、规则持久化,... 目录Debian系UFW防火墙1. 安装2. 启用与禁用3. 基本命令4. 注意事项5. 示例配置R

深度解析Nginx日志分析与499状态码问题解决

《深度解析Nginx日志分析与499状态码问题解决》在Web服务器运维和性能优化过程中,Nginx日志是排查问题的重要依据,本文将围绕Nginx日志分析、499状态码的成因、排查方法及解决方案展开讨论... 目录前言1. Nginx日志基础1.1 Nginx日志存放位置1.2 Nginx日志格式2. 499

SpringBoot监控API请求耗时的6中解决解决方案

《SpringBoot监控API请求耗时的6中解决解决方案》本文介绍SpringBoot中记录API请求耗时的6种方案,包括手动埋点、AOP切面、拦截器、Filter、事件监听、Micrometer+... 目录1. 简介2.实战案例2.1 手动记录2.2 自定义AOP记录2.3 拦截器技术2.4 使用Fi

最新Spring Security的基于内存用户认证方式

《最新SpringSecurity的基于内存用户认证方式》本文讲解SpringSecurity内存认证配置,适用于开发、测试等场景,通过代码创建用户及权限管理,支持密码加密,虽简单但不持久化,生产环... 目录1. 前言2. 因何选择内存认证?3. 基础配置实战❶ 创建Spring Security配置文件

kkFileView启动报错:报错2003端口占用的问题及解决

《kkFileView启动报错:报错2003端口占用的问题及解决》kkFileView启动报错因office组件2003端口未关闭,解决:查杀占用端口的进程,终止Java进程,使用shutdown.s... 目录原因解决总结kkFileViewjavascript启动报错启动office组件失败,请检查of

Python获取浏览器Cookies的四种方式小结

《Python获取浏览器Cookies的四种方式小结》在进行Web应用程序测试和开发时,获取浏览器Cookies是一项重要任务,本文我们介绍四种用Python获取浏览器Cookies的方式,具有一定的... 目录什么是 Cookie?1.使用Selenium库获取浏览器Cookies2.使用浏览器开发者工具

SQL Server安装时候没有中文选项的解决方法

《SQLServer安装时候没有中文选项的解决方法》用户安装SQLServer时界面全英文,无中文选项,通过修改安装设置中的国家或地区为中文中国,重启安装程序后界面恢复中文,解决了问题,对SQLSe... 你是不是在安装SQL Server时候发现安装界面和别人不同,并且无论如何都没有中文选项?这个问题也

Java获取当前时间String类型和Date类型方式

《Java获取当前时间String类型和Date类型方式》:本文主要介绍Java获取当前时间String类型和Date类型方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录Java获取当前时间String和Date类型String类型和Date类型输出结果总结Java获取

C#监听txt文档获取新数据方式

《C#监听txt文档获取新数据方式》文章介绍通过监听txt文件获取最新数据,并实现开机自启动、禁用窗口关闭按钮、阻止Ctrl+C中断及防止程序退出等功能,代码整合于主函数中,供参考学习... 目录前言一、监听txt文档增加数据二、其他功能1. 设置开机自启动2. 禁止控制台窗口关闭按钮3. 阻止Ctrl +