go:在当前目录或任何父目录中找不到 go.mod 文件;参见“去帮助模块”

shw*_*ick 52 linux go

嘿,我刚刚更新到新版本的 go go version go1.16.2 linux/amd64,在构建hello world 示例时出现错误:

go: go.mod file not found in current directory or any parent directory; see 'go help modules'
Run Code Online (Sandbox Code Playgroud)

即使我按照该帖子中的修复程序进行操作它也不起作用。我设置了这些变量然后再次构建:

GO111MODULE=on
GOPROXY=https://proxy.golang.org,direct
Run Code Online (Sandbox Code Playgroud)

不幸的是,同样的问题。

小智 87

首先确保您的 GO111MODULE 值设置为“auto”。您可以从以下位置检查:

go env
Run Code Online (Sandbox Code Playgroud)

如果未设置为“auto”,则运行:

go env -w GO111MODULE=auto
Run Code Online (Sandbox Code Playgroud)

转到终端中的工作目录并运行:

go mod init
go mod tidy
Run Code Online (Sandbox Code Playgroud)

你已准备好出发!

  • @pmor你需要使用命令指定文件路径,使用`go mod init ~/path_to_file.go` (4认同)
  • `go mod init` 导致 `go: 无法确定源目录 d:\TMSU 的模块路径(在 GOPATH 之外,必须指定模块路径)`。 (2认同)

shw*_*ick 49

啊哈哈成功了!这太棒了!是的,只需按照教程进行操作,对我来说就是go mod init test3创建模块。没有其他人从旧版本升级,或者其他人都只是正确理解它我猜。

  • 谢谢你!这也可以作为构建 docker 镜像 - 在 `Dockerfile` 中执行 `RUN go mod init` :) (9认同)

小智 29

改变这个:

go env -w GO111MODULE=auto

对此:

go env -w GO111MODULE=off

  • 它有效,谢谢,但你能解释一下为什么它有效吗? (14认同)
  • 为什么这有效?它应该做什么?此更改是否存在一些安全隐患?操作原理是什么? (14认同)
  • GO111MODULE=off 强制 Go 以 GOPATH 方式运行,即使在 GOPATH 之外 (8认同)
  • 首先确保您的 GO111MODULE 值设置为“auto”。您可以通过以下方式检查:```bash go env ``` 如果未设置为“auto”,请运行: ```bash go env -w GO111MODULE=auto ``` 转到终端中的工作目录并运行: ```bash go mod init 'project_name' go mod tidy ``` 再次设置为“off”,否则你的代码将无法运行,为此,请运行: ```bash go env -w GO111MODULE=off `` 你可以走了! (2认同)

小智 14

Dockerfile如果您正在构建 docker 映像,请从您的项目目录中将这行代码添加到您的文件中

RUN go mod init

或在您的目录中

go mod init


Spa*_*eus 12

从 1.16 开始,Go 默认以模块感知模式构建包。看这里

导航到包含 Go 文件的文件夹并运行:

go mod init <modulename>

这里创建了一个go.mod文件,该目录将成为新创建模块的根目录。请参阅此处了解有关 Go 模块的信息。


小智 7

这对我有用:

FROM golang:alpine

WORKDIR /go/src/app

ADD . .
RUN go mod init

RUN go build  -o /helloworld

EXPOSE 6111

CMD ["./helloworld"]
Run Code Online (Sandbox Code Playgroud)


小智 5

我试图go build在 Windows 本地计算机上运行该命令,但遇到了错误go: go.mod file not found in current directory or any parent directory; see 'go help modules'

这就是我解决这个问题的方法:

  • 首先,我通过运行获得了应用程序的根目录$ pwd,并得到了如下响应/c/projects/go-projects/go-server
  • 然后我跑了$ go mod init c/projects/go-projects/go-server

这完全消除了错误,我可以使用命令运行服务器$ ./go-web

PS:值得注意的是,我在我的机器上使用适用于 Windows 的Git Bash Linux 终端运行 Linux 命令,它默认在 Windows 中安装了适用于 Windows 的 git。