Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Conflict in repo name and module name

Tags:

go

I created the github.com project qjson/qjson-go that contains the package name qjson that you can see here. I named the github project this way because github.com/qjson/ contains other projects for different languages (e.g. qjson-c).

Unfortunately, I get the following error when I try to import the project as github.com/qjson/qjson-go:

$ go mod tidy
go: finding module for package github.com/qjson/qjson-go
go: downloading github.com/qjson/qjson-go v0.0.0-20210128102242-170c47e2db46
github.com/xxx/xxx imports
    github.com/qjson/qjson-go: module github.com/qjson/qjson-go@latest found (v0.0.0-20210128102242-170c47e2db46), but does not contain package github.com/qjson/qjson-go

I’m apparently doing it wrong. I understand that due to the import statement we are then expected to use gjson-go as package identifier.

What must I do so that the git project can be named qjson-go and the package qjson ?

I assume that one solution is to create a sub-directory named qjson inside qjson-go and move all package files in it. The user would then import "github.com/qson/qson-go/qjson". Is that correct ? Is there another solution avoiding the stutter ?

like image 702
chmike Avatar asked Oct 22 '25 13:10

chmike


1 Answers

This program works as expected:

package main

import (
   "fmt"
   "github.com/qjson/qjson-go/qjson"
)

func main() {
   fmt.Println(qjson.ErrDivisionByZero)
}

The issue is that you are using this file structure:

qjson/engine.go
qjson/errors.go

When you should just be putting them at the top level, like this:

engine.go
errors.go

So you can either fix the directory, and tag a new version, or just leave the files as is, and change your imports to match what I have above.

like image 113
Zombo Avatar answered Oct 25 '25 10:10

Zombo



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!