[ 生活需要仪式感 ]

0%

VsCode远程隧道无法跳转Go定义

1 前言

一直打算用 iPadPro 替代电脑进行开发,不过之前项目繁忙没法抽空处理。

直到最近有闲暇时光研究,本想使用 CodeServer + Cloudflare ZeroTrust的方式,在本地用 docker 起 CodeServer,然后通过 Cloudflare 进行外部鉴权和穿透使用。

但是发现 VsCode 的远程隧道的启用,非常的丝滑,而且官方保证隧道安全和联通性,明显对比自建更胜一筹。


2 问题

顺利连接上,代码也能用了,但是发现一个问题:

Go代码没法跳转到定义(Go To Definition)

我反复确认,在电脑本地环境是没问题的,但是 GO 扩展显示以下错误:

1
2
3
4
Error loading workspace folders (expected 1, got 0) 
failed to load view for file:///Users/demoUser/Work/project?vscode-lang%3Dzh-cn:
err: chdir /Users/demoUser/Work/project?vscode-lang=zh-cn:
no such file or directory: stderr:

核心是 failed to load view for ... 以及 chdir 命令执行错误。


3 解决方案

3.1 思路

明显这个是 VsCode 针对项目路径进行了尝试,而且我使用了 mac 确定了这个路径是存在的。
但是依旧报错,经过一番 Google 搜索,都指向了 GO 扩展配置问题,试了不同的配置,都发现不行。

最后,进行认真研究了下,发现了问题出在了 ?vscode-lang=zh-cn,这个是安装了 Chinese(Simplified)(简体中文)Language Pack) 中文语言包后,自动带上的尾巴。

假设项目目录是 /Users/demoUser/Work/project,确实在 Work 目录下找不到 project?vscode-lang=zh-cn 这个目录,所以报错了,

而 VsCode 应该没有正确处理这个尾巴,导致访问系统文件时,带上了这个小尾巴,执行 chdir 命令,就找不到对应的路径了,导致 ** GO 扩展无法正确启动,也就没有办法解析对应的数据,也就没有正确处理跳转到定义(GoToDefinition)**的能力了。

3.2 解决方案

解决方案也就非常简单了,也就是 卸载 Chinese(Simplified)(简体中文)Language Pack) 中文语言包,然后重启隧道,即可。