Maison >développement back-end >Golang >Pourquoi Go Modules renvoie-t-il l'erreur « Le module de remplacement sans version doit être le chemin du répertoire (enraciné ou commençant par...) » ?

Pourquoi Go Modules renvoie-t-il l'erreur « Le module de remplacement sans version doit être le chemin du répertoire (enraciné ou commençant par...) » ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-05 17:56:021086parcourir

Why does Go Modules throw the

go modules - "le module de remplacement sans version doit être le chemin du répertoire (rooté ou commençant par...") Glitch

Dans le contexte des modules go, la directive replace permet de remplacer un module par un chemin local. Cependant, cette directive a une exigence spécifique : le chemin doit être soit rooté (commençant par "/"), soit relatif à la racine du module.

Comprendre le problème

Dans le scénario fourni, une tentative d'utilisation d'un package local (mypack) dans un module go (goweb) a entraîné l'erreur : "Le module de remplacement sans version doit être un chemin de répertoire (rooté ou commençant par .)" Cette erreur indique que le chemin spécifié pour la directive replace ne répond pas au format requis.

Résolution du problème

Pour résoudre ce problème, assurez-vous que le chemin de la directive replace répond aux conditions suivantes :

  • Il doit s'agir d'un chemin absolu (commençant par "/").
  • Si le chemin est relatif, il doit être relatif au répertoire racine du module (le répertoire contenant le go.mod).

Solution

Dans le cas du module goweb, puisque mypack est un frère de son répertoire racine, la directive de remplacement correcte est :

<code class="go">replace mypack => ../mypack</code>

De plus, pour que ce remplacement fonctionne efficacement, mypack doit également être converti en module go en ajoutant un fichier go.mod à son répertoire. Cela peut être fait en exécutant la commande go mod init mypack dans le répertoire mypack.

Autres considérations

Si l'application et le package qu'elle utilise font partie du même go module, l’ajouter à go.mod n’est pas nécessaire. Il suffit de se référer au package dans le code.

Ressources

  • [Remplacer la directive dans les modules Go](https://go.dev/ref /mod#hdr-Replace_Directives)
  • [Comment utiliser un module extérieur à "GOPATH" dans un autre module ?](https://stackoverflow.com/questions/52576751/how-to-use- un-module-qui-est-en-dehors-de-gopath-dans-un-autre-module)

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn