Gopath环境错误

时间:2017-06-13 21:26:07

标签: windows go visual-studio-code

我正在使用Visual Studio代码编写一些代码。昨天一切正常,但现在我无法运行调试器或构建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 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 个答案:

答案 0 :(得分: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

调试器涉及:

  • %PATH%
  • 中有dlv.exe
  • 一个${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中同时将GOPATH替换为cwd

请注意,我具体说明了GOPATH 以及 cwd(当前工作目录) 我从工作区根目录打开我的文件(这样就可以识别断点)。来自main.go的简单 F5 确实成功运行(在Windows上!)

有了这个,我可以从没有cmdGOROOT设置的GOPATH Windows shell启动VSCode,它仍然有效。 (因为我的本地用户设置包括"go.goroot": "D:/prgs/go/latest"

答案 1 :(得分:0)

如果要从tmux shell中的命令行启动VSCode,请尝试在tmux外部启动。也尝试从启动器启动。 MacOS上的tmux和VSCode的变化使我最近对环境设置感到头疼,导致类似的问题。