首页 > 文章列表 > 不允许在更改 Go 版本时修改 process.env 设置

不允许在更改 Go 版本时修改 process.env 设置

239 2024-02-06
问题内容

我使用的是m2,并使用brew安装了go 1.20。现在我想在 vscode 中切换 go 版本:

但是失败并出现以下警告消息:

switching go version when process.env["goroot"] is set is unsupported.

.zshrc 中删除 goroot 后,goroot 已从 env 中消失。但它仍然存在于go env中。如何从 go env 中删除 goroot?我也尝试从 ${home}/library/application support/go/env 中删除它,但仍然无法切换 go 版本。

➜  ~ env |grep GOROOT
➜  ~ go env GOROOT
/usr/local/go


正确答案


选择 go 环境是 vscode-go 扩展的一项功能(请参阅管理您的 go 版本)。

如果从 .zshrc 中删除 goroot 后,env 的输出 | grep goroot 为空,那么您已经做了正确的事情来使该功能正常工作。

请记住,vscode 不会立即观察到更改。需要重启vscode。棘手的是,如果 vscode 由设置了 goroot 的进程启动,vscode 仍然会看到它。因此,为了安全起见,也许最好重新启动系统。

现在我必须在settings.json中设置“go.goroot”来更改go版本。

您应该在重新启动 vscode 或重新启动系统后删除此配置。否则,您将收到此警告:

Switching Go version when "go.goroot" is set is unsupported.

但它仍然存在于go env中。如何从 go env 中删除 goroot

这是预期的。您不需要也不可能从 go env 的输出中删除它。

go env goroot 显示 goroot 的有效设置。它显示来自以下来源之一的值(优先级较高的第一个):

  1. 从当前 go 命令推断的路径。例如,如果您使用 go install golang.org/dl/go1.19@latest 安装了 go1.19,则运行 go1.19 env goroot 将为您提供类似 $home/sdk/go1.19 的路径。
  2. goroot 环境变量;
  3. go环境配置文件中设置的值(go env genv显示配置文件的路径)。
  4. path 部分中找到的 go 命令推断出的路径(与上面的第 1 点相比,这有点令人困惑)。