【问题标题】:Error message "go: go.mod file not found in current directory or any parent directory; see 'go help modules'"错误消息“go:在当前目录或任何父目录中找不到 go.mod 文件;请参阅 'go help modules'”
【发布时间】:2022-02-08 05:36:28
【问题描述】:

我刚刚更新到新版本的 Go - Go 版本 1.16.2 Linux/amd64 并且在构建 Hello, World! example 时遇到错误:

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

即使我遵循that post 的修复程序,它也无法正常工作。我设置了这些变量,然后再次构建:

GO111MODULE=on
GOPROXY=https://proxy.golang.org,direct

不幸的是,同样的问题。

【问题讨论】:

标签: linux go


【解决方案1】:

改变这个:

go env -w GO111MODULE=auto

到这里:

go env -w GO111MODULE=off

【讨论】:

  • 它起作用了,谢谢,但你能解释一下它为什么起作用吗?
  • 这行得通。谢谢..应该包含在github上的文档中
  • GO111MODULE=off 强制 Go 以 GOPATH 方式运行,即使在 GOPATH 之外也是如此
  • 在此处了解更多信息:maelvls.dev/go111module-everywhere
  • 为什么会这样?它应该做什么?此更改是否存在一些安全隐患?什么是操作理论?
【解决方案2】:

是的,只需按照教程进行操作,对我来说,正在做 go mod init test3 来创建一个模块。没有其他人从旧版本升级,或者其他人只是正确理解它。

【讨论】:

  • 谢谢!这也可以作为构建 docker 镜像 - RUN go mod init in a Dockerfile :)
  • 谢谢,这对我来说是违反直觉的。
【解决方案3】:

首先确保您的 GO111MODULE 值设置为“auto”。 您可以通过以下方式查看:

go env

如果没有设置为“自动”,则运行:

go env -w GO111MODULE=auto

在终端中进入你的工作目录并运行:

go mod init
go mod tidy

你可以走了!

【讨论】:

  • go mod init 导致go: cannot determine module path for source directory d:\TMSU (outside GOPATH, module path must be specified)
  • @por 你需要用命令指定文件路径,使用go mod init ~/path_to_file.go
【解决方案4】:

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

RUN go mod init

或者在你的目录中:

go mod init

【讨论】:

    【解决方案5】:

    这对我有用:

    FROM golang:alpine
    
    WORKDIR /go/src/app
    
    ADD . .
    RUN go mod init
    
    RUN go build  -o /helloworld
    
    EXPOSE 6111
    
    CMD ["./helloworld"]
    

    【讨论】:

    • Docker 相关,大概?这如何回答这个问题? “EXPOSE 6111”应该做什么?为什么GO111MODULEGOPROXY 不出现在这个答案中?这是在哪个版本的 Docker 和哪个主机系统(包括版本)上测试的?你能elaborate回答吗? (但没有“编辑:”、“更新:”或类似的 - 答案应该看起来好像是今天写的。)
    【解决方案6】:

    从 1.16 开始,Go 默认以模块感知模式构建包。见here

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

    go mod init <modulename>.

    这里会创建一个go.mod文件,这个目录将成为新创建模块的根目录。请参阅 here 以了解 Go 模块。

    【讨论】:

      【解决方案7】:

      我试图在我的 Windows 本地计算机上运行 go build 命令,但遇到了 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 中安装 git for windows。

      【讨论】:

      • 感谢@Marcel 分享此解决方案。我以这种方式修复了同样的错误。
      【解决方案8】:

      尝试运行以下命令

      • 'go mod init example.com/m' 来初始化 v0 或 v1 模块
      • 'go mod init example.com/m/v2' 初始化 v2 模块

      【讨论】:

        【解决方案9】:

        我在构建 Docker 映像时遇到了同样的错误:

        docker build . -t ms-c3alert:1.0.6
        

        错误详情:

        Step 11/21 : ENV GO111MODULE=on
        
         ---> Using cache
         ---> 1f1728be0f4a
        Step 12/21 : RUN CGO_ENABLED=1 GOOS=linux GOARCH=amd64 go build -a -installsuffix cgo -o c3alert .
         ---> Running in ee4b3d33d1d2
        go: go.mod file not found in current directory or any parent directory; see 'go help modules'
        The command '/bin/sh -c CGO_ENABLED=1 GOOS=linux GOARCH=amd64 go build -a -installsuffix cgo -o c3alert .' returned a non-zero code: 1
        

        我已经通过在我的 Dockerfile 中添加以下行来解决它。以前,根据之前帖子中的指南,它需要在模块中拥有一个 Go 项目:

        COPY go.mod .
        COPY go.sum .
        RUN go mod download
        

        【讨论】:

          【解决方案10】:

          我最近发现“不需要模块”是您在尝试运行/构建不存在或有拼写错误的 Go 文件时收到的错误消息。

          我的学生将他的文件命名为“filename.Go”。大写的“G”使其成为无效的Go文件,但Visual Studio Code仍将其识别为Go文件,因此花了很长时间才发现它。

          我花了很长时间解决这个问题,试图理解模块和与文件夹的关系,但问题是一个错字。

          实际上是 Go 文件而不是“丢失”的 .mod 文件时出现令人困惑的错误消息。

          【讨论】:

            【解决方案11】:
            1. 不要在您的主文件夹中安装 Go。例如。 ~/go,因为这个文件夹将被 To 用于进一步的第三方库安装

            2. 下载 Go install ZIP 文件并将其解压缩到另一个地方,例如/workspace/tools/go 并设置您的 PATH=/workspace/tools/go/bin

            就是这样。不需要go mod init

            【讨论】:

              【解决方案12】:

              我刚开始学习围棋。

              如果你像下面这样构建你的程序,我发现了这一点:

              go build "name of go app with path"
              
              go build .\Main.go
              

              【讨论】:

                猜你喜欢
                • 2022-01-10
                • 1970-01-01
                • 2021-09-27
                • 2019-06-05
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2022-10-17
                相关资源
                最近更新 更多