web-dev-qa-db-fra.com

go build continue de se plaindre que: go.mod a un chemin de module post-v0

Suite à la sortie de Go 1.11, j'ai essayé de déplacer mes référentiels vers les modules Go, en ajoutant un go.mod fichier à leur racine.

Une de mes bibliothèques racine my.Host/root est dans sa version 17.0.1, j'ai donc écrit dans sa go.mod fichier:

module my.Host/root/v17

J'ai marqué cette version v17.0.1 comme indiqué dans le manuel des modules Go.

Lorsque j'essaie de créer un nouveau projet Go qui utilise ma bibliothèque racine, comme:

package main

import root "my.Host/root/v17"

func main() {
    root.DoSomething()
}

Et essayez de le compiler, j'obtiens l'erreur suivante:

go: my.Host/[email protected]: go.mod a le chemin du module post-v0 "my.Host/root/v17" à la révision 6bc78016491a

Je ne sais pas pourquoi cela se produit. J'ai explicitement ajouté v17.0.1 dans le go.mod fichier, mais chaque tentative de go build remplace l'entrée par un v0.0.0-20180828034419-6bc78016491a version qui échoue ensuite car à ce commit, le go.mod fichier module l'entrée de ma bibliothèque racine se termine en effet par un v17, Comme il se doit.

Pour mémoire, cette validation est la même que la balise v17.0.1 version.

Qu'est-ce que je fais mal ici? Comment puis-je déboguer cette situation?

10
ereOn

J'ai dû faire deux erreurs:

  • Mon initiale v17.0.0 tag pointerait vers un commit où go.mod ne contenait pas le v17 suffixe du chemin d'importation. Par conséquent, il semble que les outils Go considèrent l'ensemble de la version majeure de la v17 comme une v0/v1, même si les balises v17 ultérieures pointent vers un commit avec un go.mod directive, d'où l'ID de validation "translation".
  • Dans mes projets dépendants, dans le go.mod fichier, j'ai spécifié par erreur require my.Host/root v17.0.1 au lieu de require my.Host/root/v17 v17.0.1.

Après avoir résolu ces deux problèmes, tout semble redevenir normal et cela fonctionne parfaitement. Je souhaite que la documentation ait été plus claire à ce sujet mais je suppose que c'est une bonne occasion de faire une contribution!

8
ereOn

L'erreur que j'ai eue était: github.com/emicklei/[email protected]: go.mod has post-v0 module path "github.com/emicklei/go-restful/v2" at revision 3658237ded10

Ajout de github.com/emicklei/go-restful avec v2 ainsi: github.com/emicklei/go-restful/v2 dans mon go.mod le fichier l'a corrigé pour moi.

4
djsd123