Nona
Nona

Reputation: 5472

golang unknown revision module/vX.Y.Z and importing package properly

I have a golang application structure like this:

.
├── calc
│   ├── go.mod
│   ├── main.go
│   └── Makefile
├── go.mod
├── LICENSE
├── num
│   ├── go.mod
│   └── num.go
└── README.md

Where calc is an "application" where I'm importing the num package to add 2 numbers.

calc/go.mod

go 1.15

require github.com/github_username/goapp/num v0.2.1

num/go.mod

module github.com/github_username/goapp/num/v0.2.1

go 1.15

go.mod

module github.com/github_username/goapp/v0.2.1

go 1.15

When in /calc, and I run go run main.go, I get the following:

go: github.com/github_username/goapp/[email protected]: reading github.com/github_username/goapp/num/num/go.mod at revision num/v0.2.1: unknown revision num/v0.2.1

What am I doing wrong? The github repo has the annotated tags.

For further context, I'm mimicking a production setup where we have six different mini golang services in folders such as calc, calc2, etc. where each "calc" service has a go.mod file.

Upvotes: 0

Views: 466

Answers (2)

Are you working with private repositories?

if yes, then you need to configure OAuth authentication:

export GITHUB_TOKEN=MY_GITHUB_TOKEN

git config --global url."https://${GITHUB_TOKEN}:[email protected]/".insteadOf "https://github.com/"

Now, if you don't have the necessity to use private repositories!

Turn your repositories to the public that will solve the problem too.

Upvotes: 0

Volker
Volker

Reputation: 42458

module github.com/github_username/goapp/num/v0.2.1

Is nonsense. The semver version tag "v0.2.1" does not belong into the module name. (Note that for major versions > 1, e.g. 4.3.1, the major version becomes part of the name like in module github.com/user/proj/folder/v4).

And one more: There are no source code belonging to the root go.mod so this module makes no sense whatsoever.

You really should not make that many modules.

Upvotes: 0

Related Questions