Reputation: 4877
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
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
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
Reputation: 91
for me it just remove or disable zsh-golang plugin. https://github.com/wintermi/zsh-golang
Upvotes: 0
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
Reputation: 420
just go to the parent directory and run go mod init "child/project root directory name"
Upvotes: 1
Reputation: 21549
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
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
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
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
Reputation: 63
Try running the below commands
Upvotes: 4
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:
$ pwd
and got a response like so /c/projects/go-projects/go-server
$ 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
Reputation: 121
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
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
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
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
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
Reputation: 3099
Change this:
go env -w GO111MODULE=auto
to this:
go env -w GO111MODULE=off
Upvotes: 309