Gopath环境错误

4
我正在使用Visual Studio Code编写一些Go代码。昨天一切正常,但现在我无法在VS-Code中运行调试器或构建项目。
我使用Windows 10,并且我选择Powershell作为我的终端。
我遇到了以下错误:
go: GOPATH entry is relative; must be absolute path: "/Users/efronlicht/go".
For more details see: 'go help gopath'
exit status 2
Process exiting with code: 1

这是一个与 VS-CODE 相关的错误,因为我可以像往常一样通过终端使用 go build 来构建 Go 源文件。

以下是 go env 的结果:

set GOARCH=amd64
set GOBIN=
set GOEXE=.exe
set GOHOSTARCH=amd64
set GOHOSTOS=windows
set GOOS=windows
set GOPATH=C:\work\go
set GORACE=
set GOROOT=C:\Go
set GOTOOLDIR=C:\Go\pkg\tool\windows_amd64
set GCCGO=gccgo
set CC=gcc
set GOGCCFLAGS=-m64 -mthreads -fmessage-length=0
set CXX=g++
set CGO_ENABLED=1
set PKG_CONFIG=pkg-config
set CGO_CFLAGS=-g -O2
set CGO_CPPFLAGS=
set CGO_CXXFLAGS=-g -O2
set CGO_FFLAGS=-g -O2
set CGO_LDFLAGS=-g -O2

您可以看到,我的GOPATH是绝对路径,而不是相对路径。


2
打开你的VS Code设置,查找工作区设置和用户设置中的go.gopath。你有什么值? - jeevatkm
好的,那是工作区的默认值。让我们尝试在用户设置中设置go.gopath,例如 "go.gopath": "C:/work/go" - jeevatkm
如果是这种情况,您可以从VS Code中删除go.gopath设置并关闭它。还要取消设置GOPATH环境变量。现在我们将尝试使用默认值。VS Code和Go应该使用默认的gopath,即USER_HOME/go。如果这不起作用,很抱歉,您的VS Code应用程序出了问题。请进行清洁安装,再试一次。 - jeevatkm
不行。我尝试了全新安装和一切... - Efron Licht
谢谢!我现在正在工作,所以这得等一下,但是我很感激你的帮助。 - Efron Licht
显示剩余5条评论
2个回答

2
我使用Windows 10上的VSCode 1.13.1,可以无问题地启动或调试。
启动需要在您的工作区中有一个`${workspaceroot}/.vscode/tasks.json`文件。 为了确保GOPATH值正确,我的包括:
{
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "version": "0.1.0",
    "command": "build",
    "isShellCommand": true,
    "showOutput": "always",
    "tasks": [
        {
            "options": {
                "env": {
                    "GOROOT": "D:/prgs/go/latest",
                    "GOPATH": "${workspaceRoot}"
                }
            },
            "echoCommand": false,
            "taskName": "install",
            "isBuildCommand": true
        },

在你的情况下,你可以将"${workspaceRoot}"替换为C:/work/go
这样,按下Ctrl+Shift+B会触发编译和安装(go install)操作。
调试器需要以下步骤:
  • dlv.exe添加到%PATH%
  • 一个${workspaceroot}/.vscode/launch.json文件
这是我的文件。
{
    "version": "0.2.0",
    "configurations": [
        {
            "stopOnEntry": false,
            "cwd": "${workspaceRoot}",
            "name": "Launch",
            "type": "go",
            "request": "launch",
            "mode": "debug",
            "remotePath": "",
            "port": 2345,
            "host": "127.0.0.1",
            "program": "${fileDirname}",
            "env": {
                "GOPATH": "${workspaceRoot}"
            },
            "args": [],
            "showLog": true
        }
    ]
}

在您的情况下,可以将"${workspaceRoot}"替换为C:/work/go(在GOPATHcwd中均需如此)。请注意,我还指定了GOPATH以及当前工作目录。我从工作区根目录相对打开我的文件(这样,断点会被识别)。 从main.go进行简单的F5运行Delve成功(在Windows上!)

有了这个设置,我可以从没有设置GOROOTGOPATH的cmd Windows shell启动VSCode,并且仍然可以正常工作(因为我的本地用户设置包括"go.goroot": "D:/prgs/go/latest"


这就做到了!谢谢你的帮助。 - Efron Licht
@EfronLicht 做得好!我最近为Go切换到了VSCode,到目前为止,我的体验出奇的好。 - VonC

0

如果您正在tmux shell中从命令行启动VSCode,请尝试在tmux之外启动。还可以尝试从启动器启动。最近在MacOS上,tmux和VSCode的更改给我带来了环境设置方面的头痛,导致出现类似的问题。


我不知道tmux是什么,所以那不可能是它,抱歉。谢谢你的建议! - Efron Licht

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接