当我尝试编辑go文件时,收到来自vscode的以下错误:
“加载工作区时出错:您位于模块和$GOPATH/src之外。如果您正在使用模块,请打开编辑器并转到模块中的目录。如果您认为此警告不正确,请提交问题:https://github.com/golang/go/issues/new."
我的围棋路径设置如下:GOPATH=C:\用户\我的用户名\go
我有VSCode,在其他机器上一起工作很好...但是我不知道这里出了什么问题。
我还是个新手,所以我对GOPATH的意义有点困惑。
从go docs它说:“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
4条答案
按热度按时间h4cxqtbf1#
您可能在VSCode中打开了一个具有以下格式的目录。
打开包含多个go.mod文件的目录将导致此错误。解决方法是在VSCode中只打开project1目录,并且只打开一个go.mod文件。
50pmv0ei2#
您可以通过运行
go mod init <name>
来初始化一个所谓的“go模块”,其中name通常是您的存储库URL(例如github.com/user/repo)。这将生成一个
go.mod
文件。阅读更多关于go模块here的信息。fcwjkofz3#
如果你在一个工作区中有多个go.mod文件,你可以使用"go work"来添加该文件夹。
它需要Go语言1.18以上
1.在工作区的根路径中
1.$开始工作初始化
1.$go work use [文件夹名]
The go.work file will be generated automatically
示例:
下面是我的测试项目结构图,以供参考:
xriantvc4#
发生这种情况是因为你应该直接打开你的项目通过vs-code而不是一个父目录。