如何导入vscode路径

mat*_*att 19 go visual-studio-code

当我尝试编辑 go 文件时,我从 vscode 收到以下错误:

“加载工作区时出错:您位于模块之外且位于 $GOPATH/src 之外。如果您正在使用模块,请将编辑器打开到模块中的目录。如果您认为此警告不正确,请提交问题:https ://github.com/golang/go/issues/new。”

我的go路径设置如下:GOPATH=C:\Users\myusername\go

我有 vscode 并在其他机器上一起工作得很好......但我不知道这里出了什么问题。

我还是个新手,所以我对 GOPATH 的意义有点困惑。

从 go 文档中可以看出:“GOPATH 环境变量指定了你的工作空间的位置”

对于工作空间的定义,文档说:“工作空间是一个目录层次结构,其根目录有两个目录:”

所以从文档所说的以及 vscode 抱怨的是我的代码位于路径“C:\Users\myusername\go”之外......

显然 go 并不期望我在我的机器上的位置“C:\Users\myusername\go”中完成所有工作。

那么它在抱怨什么呢?

这是我的“gopls -rpc.trace -v check go_practice.go”命令的输出:

2021/04/21 16:05:23 Info:2021/04/21 16:05:23 go env for C:\projects\go_practice
(root C:\projects\go_practice)
(go version go version go1.16.3 windows/amd64)
(valid build configuration = false)
(build flags: [])
GOROOT=C:\Program Files\Go
GOSUMDB=sum.golang.org
GOFLAGS=
GOINSECURE=
GOPROXY=https://proxy.golang.org,direct
GO111MODULE=
GOCACHE=C:\Users\username\AppData\Local\go-build
GONOPROXY=
GOMOD=NUL
GOPRIVATE=
GOMODCACHE=C:\Users\username\go\pkg\mod
GONOSUMDB=
GOPATH=C:\Users\username\go
Run Code Online (Sandbox Code Playgroud)

小智 27

也许你在 VSCode 中打开了一个如下格式的目录。

example dir
      |- project1
           |- main.go
           |- go.mod
           ...
      |- project2
           |- main.go
           |- go.mod
           ...
      |- project3
           |- main.go
           |- go.mod
           ...
...
Run Code Online (Sandbox Code Playgroud)

打开包含多个 go.mod 文件的目录将导致此错误。解决办法是在VSCode中只打开project1目录,只打开一个go.mod文件。

  • 现在Golang支持workspace了,我们可以打开几个模块了!参考https://github.com/golang/tools/blob/master/gopls/doc/workspace.md (10认同)

Jer*_*rry 18

如果一个工作区中有多个 go.mod 文件,可以使用“go work”添加文件夹。

它需要 Go 1.18+

  1. 在工作空间的根路径中
  2. $去工作初始化
  3. $go work use [文件夹名称]

go.work文件会自动生成

例子:

go work init
go work http_Todo <no need "./">
Run Code Online (Sandbox Code Playgroud)

以下是我的测试项目结构供参考: 在此输入图像描述


Mar*_*ndt 9

您可以通过运行来初始化所谓的“go 模块” go mod init <name>,其中 name 通常是您的存储库 URL。(例如 github.com/user/repo)

这将生成一个go.mod文件。在此处阅读有关 go 模块的更多信息。

  • “去做吧”并不能回答为什么 (3认同)