asker152
asker152

Reputation: 4877

Error message "go: go.mod file not found in current directory or any parent directory; see 'go help modules'"

I just updated to the new version of Go - Go version 1.16.2 Linux/amd64 and am getting an error when I build a Hello, World! example:

go: go.mod file not found in current directory or any parent directory; see 'go help modules'

Even when I follow the fix from this post it isn't working. I set these variables and then build again:

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

And the same problem unfortunately.

Upvotes: 229

Views: 512951

Answers (16)

Guy_g23
Guy_g23

Reputation: 385

For anyone who runs into this error on Windows 11 Go v1.19 (or higher) then my workaround to this was to type these commands in terminal:

go mod init <filename.go>
go mod tidy

and make sure to have the go.mod file inside the same directory as the go program file where the main function is.

Upvotes: 2

Vishwa Ratna
Vishwa Ratna

Reputation: 6390

FROM golang:1.20.5-alpine

WORKDIR /app

COPY main.go .

RUN go mod init main
RUN go build -o test.go

CMD ["./test.go"]

Change from RUN go mod init to RUN go mod init main else you will get

go: cannot determine module path for source directory /app (outside GOPATH, module path must be specified)

Upvotes: 0

Suhendra
Suhendra

Reputation: 91

for me it just remove or disable zsh-golang plugin. https://github.com/wintermi/zsh-golang

Upvotes: 0

lechat
lechat

Reputation: 468

I am using go v1.18. My problem was go work init. See here for more detail:
VScode show me the error after I install the proxy in vscode

I had to do:

$ cd /my/parent/dir
$ go work init
$ go work use project-one
$ go work use project-two

Now I can do:

$ cd {root directory of the module where go.mod is}
$ cd ./project-one
$ go build .
$ go run .

Upvotes: 3

Farshad
Farshad

Reputation: 420

just go to the parent directory and run go mod init "child/project root directory name"

Upvotes: 1

Siwei
Siwei

Reputation: 21549

  1. Do not install Go in your home folder. E.g. ~/go, because this folder will be used by To in further third party libraries' installation

  2. download and unzip the Go install ZIP file to another place, e.g. /workspace/tools/go and set your PATH=/workspace/tools/go/bin

That's it. There isn't any need to do go mod init.

Upvotes: 3

erikric
erikric

Reputation: 4169

I recently discovered that the "no required module" is the error message you get when trying to run/build a Go-file that doesn't exist or has a typo.

My student had named his file 'filename.Go'. The capital 'G' made it an invalid Go file, but Visual Studio Code still recognized it as a Go file, so it took a long time to discover it.

I spent a loooong time figuring this out, trying to understand modules and the relationship to folders, when the problem was a typo.

A confusing error message when it was actually the Go file, and not the .mod file that was "missing".

Upvotes: 2

ch9xy
ch9xy

Reputation: 1030

First make sure that your GO111MODULE value is set to "auto". You can check it from:

go env

If it is not set to "auto", then run:

go env -w GO111MODULE=auto

Go to your work directory in terminal and run:

go mod init
go mod tidy

You are good to go!

Upvotes: 93

Vineesh P
Vineesh P

Reputation: 63

Try running the below commands

  • 'go mod init example.com/m' to initialize a v0 or v1 module
  • 'go mod init example.com/m/v2' to initialize a v2 module

Upvotes: 4

Marcel
Marcel

Reputation: 319

I was trying to run the go build command on my Windows local machine and I ran into the go: go.mod file not found in current directory or any parent directory; see 'go help modules' error.

This is how I went about solving it:

  • First I got the root directory of my application by running $ pwd and got a response like so /c/projects/go-projects/go-server
  • Then I ran $ go mod init c/projects/go-projects/go-server

This totally took away the error and I was able to run the server with the command $ ./go-web

PS: It is important to note that I was running Linux commands on my machine using the Git Bash Linux terminal for Windows, it comes by default in Windows with the installation of git for windows.

Upvotes: 5

This worked for me:

FROM golang:alpine

WORKDIR /go/src/app

ADD . .
RUN go mod init

RUN go build  -o /helloworld

EXPOSE 6111

CMD ["./helloworld"]

Upvotes: 12

Walexhino
Walexhino

Reputation: 309

From your project directory, add this line of code in your Dockerfile file if you are building a Docker image:

RUN go mod init

Or this in your directory:

go mod init

Upvotes: 21

SparkZeus
SparkZeus

Reputation: 358

Go builds packages in module-aware mode by default starting from 1.16. See here.

Navigate to the folder containing the Go file and run:

go mod init <modulename>.

A go.mod file is created here and this directory will become the root of the newly created module. See here to read about Go modules.

Upvotes: 13

dmotta
dmotta

Reputation: 1903

I had the same error when I build a Docker image:

docker build . -t ms-c3alert:1.0.6

Error detail:

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

I've resolved it by adding the following lines in my Dockerfile. Previously, it required to have a Go project in modules, according the guide in previous posts:

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

Upvotes: 2

asker152
asker152

Reputation: 4877

Yes, just follow the tutorial and for me that was doing go mod init test3 to create a module. No one else has been upgrading from the old version or everyone else just understood it properly I guess.

Upvotes: 164

Chris Byron
Chris Byron

Reputation: 3099

Change this:

go env -w GO111MODULE=auto

to this:

go env -w GO111MODULE=off

Upvotes: 309

Related Questions