小编典典

构建 Go 项目时“package XXX is not in GOROOT”

go

当我从这个项目中休息时,出现了一个奇怪的问题。启动 Goland 后,我在尝试运行我的项目时遇到了很多错误。

构建我的一个包时的具体错误是: start.go: package project/game is not in GOROOT (C:\Go\src\project\game)

我在下面有一个文件夹结构 C:\Users\username

go
|-src
   |-project
        |-game
            |-entity
                 |-whatever.go
            |-game_stuff.go
        |-server

我的环境变量是这样的:

GOROOT=C:\Go 
GOPATH=C:\Users\ketchup\go 

对于每个模块(项目/游戏/实体、项目/游戏、项目/服务器),我做了一个git mod init.

在构建时,Goland 将尝试运行:

C:\Go\bin\go.exe build -o C:\Users\ketchup\AppData\Local\Temp\___go_build_project_server.exe project/server

并返回错误。

谁能帮我解决这个问题?有点迷失,因为我上次打开 Goland 时运行良好。甚至不确定要看什么方向 - 我对 Go 还很陌生,我不确定要看什么文档:\谢谢大家!


阅读 346

收藏
2021-12-24

共2个答案

小编典典

一个非常愚蠢的结论(主要是我的部分),但我的问题来自go mod init在每个文件夹中都完成了。从我所做的每个文件夹中删除go.mod和删除后,我可以毫无问题地构建(通过终端)go.dep``go mod init

此外,我在 GoLand 中的包没有被检测到,因为我在设置中启用了 Go 模块。我禁用了它,GoLand 能够索引外部包和我自己的包。

2021-12-24
小编典典

您可能将 GO111MODULE 设置为“on”,这将在 go mod 中使用。关闭 GO111MODULE 可能会解决此问题。

go env -w GO111MODULE=off
2021-12-24