Error message "go: go.mod file not found in current directory or any parent directory; see 'go help modules'"
Emily Wong
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 that post it isn't working. I set these variables and then build again:
GO111MODULE=on
GOPROXY=And the same problem unfortunately.
411 Answers
Change this:
go env -w GO111MODULE=auto
to this:
go env -w GO111MODULE=off
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.
First make sure that your GO111MODULE value is set to "auto". You can check it from:
go envIf it is not set to "auto", then run:
go env -w GO111MODULE=autoGo to your work directory in terminal and run:
go mod init
go mod tidyYou are good to go!
2From 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
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"] 1 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.
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
$ pwdand 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.
1Try running the below commands
- 'go mod init ' to initialize a v0 or v1 module
- 'go mod init ' to initialize a v2 module
I had the same error when I build a Docker image:
docker build . -t ms-c3alert:1.0.6Error 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: 1I'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 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".
Do not install Go in your home folder. E.g.
~/go, because this folder will be used by To in further third party libraries' installationdownload and unzip the Go install ZIP file to another place, e.g.
/workspace/tools/goand set yourPATH=/workspace/tools/go/bin
That's it. There isn't any need to do go mod init.