Golang Go语言中,用go的大家,gopls有办法不开代理来用吗?

Golang Go语言中,用go的大家,gopls有办法不开代理来用吗?

今天更新了一下 gopls 一下子悲剧了, 就不工作了
然后翻出去以后一下子就正常了
翻回来又继续不正常…
看起来 gopls 是要在线工作的, 而且连接的服务器是不行的…
我尝试搜索了一下, 好像没有讨论这个问题的?
不是说中国用 go 的人数全世界最多吗?.. 有同样问题的吗?

20 回复

请升级 go 至 1.13 ,并配置 GOPROXY
之后,就可以感受前所未有的霜

更多关于Golang Go语言中,用go的大家,gopls有办法不开代理来用吗?的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


可能是后台检索需要从网络上拉东西吧。

为什么配置了 goproxy 最近也拉不下代码呢

请说出你的场景、做法

go get github.com/grafana/grafana

gproxy 配置的是 https://goproxy.cn, direct

go1.13

你的 gopls 是官方的还是第三方的?

没理解错的话,直接 go get 并不走 goproxy。
goproxy 是用来下依赖库的,而不是下载指定 git repo。

可以通过 goproxy 下载的东西是指定包的指定版本的压缩包,以及指定包的 meta 信息。
用人话说就是只能下载 依赖库的 go 源码问题,并不包括 .git 目录及其它多数源码无关文件。

而之前的 go get 的作用是下载指定包的整个 git

接上条

之前的 go get 的作用是下载指定包的整个 git 仓库到 gopath 中的指定位置,为了向前兼容,自然就没法用 goproxy 了。

ps: 在使用 go modules 管理的 git 仓库中,go get 的作用被重新定义为:为该仓库添加指定的依赖。这样就可能正常用到 goproxy 了。

pps: 如果你是想通过 goproxy 安装指定包编译后的二进制文件,eg:安装 gopls、grafana,可以

再接
pps: 如果你是想通过 goproxy 安装指定包编译后的二进制文件,eg:安装 gopls、grafana,可以使用我的这个辅助脚本,体验同样前所未有的爽
https://gist.github.com/wweir/78ea25df5f0d9b6a9e2acc7ab031efee

那个,其实如果指定 GO111MOUDLE=on 并且显式指定 GOPATH 到特定目录,然后在非项目目录使用 go get 还是会用到 goproxy 的,然后也能正确安装到 gopath 里
另外 GO 1.14 据说要默认 go module 了

#1
你说的是安装的时候很爽吗?..
我这边 gopls 不开代理是完全不工作啊.
代码自动补全, 提示, 等等全没有啊…

本地缺包而已,gopls 会自动下载缺的包

自从用上 gopls,就没爽过

你的使用场景是什么?本地项目里面有没有用到 go module ? GO111MODULE 设置的是什么?有没有设置 GOPATH ?有没有打开 gopls 的 log 看过? ---- 来自一位 1.13 以前经常在带 mod 和不带 mod 项目之间疯狂切换的码农的灵魂拷问

看了楼上的 issue 看来不是 gopls 的问题 是 vscode 的问题 ( vscode 出问题不是很正常吗.jpg

#15
用的 vscode, 用 go mod, 设置 ON, 有 GOPATH, 没看过 log…

gopls 内存占用是越来越狠。。不得不定时的重启一把 vscode

gopls 真的很糟糕 而且开发团队看起来人也挺少的 要不说我都以为这是一个个人业务项目


包加载非常慢
补全也慢
然后改包名不能识别,还得手动重启 vscode
重命名只能在包作用域

……

坑太多了

在Golang(Go语言)中,关于gopls(Go Language Server Protocol implementation for Go)是否可以不使用代理来运行的问题,答案是肯定的。以下是具体的解释和操作方法:

首先,gopls是Go语言的一个语言服务器,它用于为编辑器提供代码补全、定义跳转、错误检查等功能。在默认情况下,gopls可能会遵循Go语言的代理设置,但这并不意味着它必须依赖代理才能运行。

其次,如果你希望gopls在不使用代理的情况下运行,可以通过设置环境变量来实现。具体来说,你可以设置GOPRIVATE和GONOPROXY环境变量来指定哪些仓库或域名在请求时不应该使用代理或模块镜像服务。

例如,你可以在你的shell配置文件中(如.bashrc或.zshrc)添加以下行:

export GOPRIVATE="*your-private-repo.com"
export GONOPROXY="*your-private-repo.com"

这里的“your-private-repo.com”应该替换为你实际使用的私有仓库域名。这样设置后,gopls在请求这些私有仓库的资源时,就不会使用代理或模块镜像服务了。

综上所述,通过合理设置环境变量,你可以让gopls在不使用代理的情况下正常运行。

回到顶部