运行 go 返回恐慌:内部错误:modload 中缺少 go 版本。要求

问题描述 投票:0回答:1

我刚刚使用以下命令在我的 mac(arm)上安装了 go:

brew install go

然后我使用 Goland IDE 创建了一个新项目。当我使用

go run hello.go
运行时,它返回以下错误:

panic: go: internal error: missing go root module

goroutine 1 [running]:
cmd/go/internal/modload.mustHaveGoRoot(...)
    /opt/homebrew/Cellar/go/1.22.1/libexec/src/cmd/go/internal/modload/buildlist.go:104
cmd/go/internal/modload.newRequirements(0xe0?, {0x14000080360?, 0x100f984e0?, 0x1400000e1f8?}, 0x120?)
    /opt/homebrew/Cellar/go/1.22.1/libexec/src/cmd/go/internal/modload/buildlist.go:118 +0x59c
cmd/go/internal/modload.updatePrunedRoots({0x10106daf0, 0x1014511e0}, 0x14000196600, 0x140000202d0, {0x0, 0x0, 0x14000196600?}, {0x0, 0x0, 0x14000192c80?}, ...)
    /opt/homebrew/Cellar/go/1.22.1/libexec/src/cmd/go/internal/modload/buildlist.go:1236 +0x9bc
cmd/go/internal/modload.updateRoots({0x10106daf0?, 0x1014511e0?}, 0x0?, 0x140000620d8?, {0x0?, 0x2?, 0x140000620d8?}, {0x0?, 0x14000075700?, 0x140000620e8?}, ...)
    /opt/homebrew/Cellar/go/1.22.1/libexec/src/cmd/go/internal/modload/buildlist.go:796 +0x7c
cmd/go/internal/modload.loadModFile({0x10106daf0, 0x1014511e0}, 0x0)
    /opt/homebrew/Cellar/go/1.22.1/libexec/src/cmd/go/internal/modload/init.go:964 +0x12cc
cmd/go/internal/modload.LoadModFile({0x10106daf0?, 0x1014511e0?})
    /opt/homebrew/Cellar/go/1.22.1/libexec/src/cmd/go/internal/modload/init.go:793 +0x28
cmd/go/internal/modcmd.runDownload({0x10106daf0, 0x1014511e0}, 0x1400002c558?, {0x140000200e0, 0x0, 0x0})
    /opt/homebrew/Cellar/go/1.22.1/libexec/src/cmd/go/internal/modcmd/download.go:120 +0x74
main.invoke(0x1013dcd00, {0x140000200c0, 0x3, 0x3})
    /opt/homebrew/Cellar/go/1.22.1/libexec/src/cmd/go/main.go:257 +0x4d8
main.main()
    /opt/homebrew/Cellar/go/1.22.1/libexec/src/cmd/go/main.go:175 +0x688

我尝试手动设置GOROOT或GOPATH,但错误仍然存在。错误消息要么是“modload.Requirements 中缺少 go 版本”,要么是“缺少 go 根模块。”

这是我的 hello.go 脚本:

package main

import "fmt"

func main() {
    fmt.Println("hello, world!")
}

这是我的

go.mod

module go

go 1.22
macos go
1个回答
0
投票

问题是由于创建一个目录名为“go”的 Goland 项目而导致生成的模块也名为“go”。为了解决这个问题,我删除了

go.mod
文件并执行了
go mod init hello
,成功解决了问题。

因此,解决方案很简单:重命名模块以避免使用“go”等保留关键字。这个简单的调整就解决了这个问题。

module go // <-- rename this to other name

go 1.22
© www.soinside.com 2019 - 2024. All rights reserved.