"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Pourquoi l'erreur « Le module de remplacement sans version doit être le chemin du répertoire » se produit-elle dans les modules Go ?

Pourquoi l'erreur « Le module de remplacement sans version doit être le chemin du répertoire » se produit-elle dans les modules Go ?

Publié le 2024-11-14
Parcourir:918

Why Does

Les modules Go et le caractère insaisissable des remplacements

Dans le domaine des modules Go, la directive replace promet de remplacer un package développé localement pour un système distant, vous permettant de travailler avec votre propre code tout en expérimentant ou en dépannant. Cependant, comme vous l'avez constaté, remplacer un package sans version spécifiée peut s'avérer une entreprise fastidieuse.

Le message d'erreur que vous avez rencontré, "le module de remplacement sans version doit être un chemin de répertoire (enraciné ou commençant par .) ", souligne l'exigence cruciale selon laquelle le chemin fourni à la directive de remplacement doit être absolu ou relatif à la racine du module.

Surmonter la perplexité du chemin

L'énigme du chemin surgit de la façon dont les modules Go sont structurés. Le fichier go.mod sert de pièce maîtresse, établissant l'identité du module et ses dépendances. Les packages qui résident dans le même module que le fichier go.mod peuvent être référencés directement, sans qu'il soit nécessaire de les remplacer. Cependant, lorsqu'il s'agit de packages externes au module, la directive replace entre en jeu.

Dans votre cas, vous aviez pour objectif d'utiliser un package local nommé mypack. Pour y parvenir, vous avez spécifié la directive de remplacement suivante dans votre fichier go.mod :

replace mypack -> ./src/mypack

Malheureusement, ce chemin n'est ni absolu ni relatif au chemin du module. racine. Le préfixe "./" signifie un chemin relatif au répertoire de travail actuel, qui n'est pas le même que la racine du module.

Établir un chemin vers Harmony

Pour Corrigez ce problème, suivez ces étapes :

  1. Convertissez mypack en module go : Créez un fichier go.mod dans le dossier mypack. Cela établira mypack en tant que module indépendant.
  2. Spécifiez un chemin absolu ou un chemin relatif à la racine du module : Dans votre fichier go.mod, modifiez la directive replace pour utiliser un chemin absolu ou chemin relatif vers monpack. Par exemple, si monpack est un frère de la racine de votre module, vous pouvez utiliser :
replace mypack -> ../mypack

Considérations supplémentaires

N'oubliez pas que la directive replace est destinée aux remplacements locaux temporaires. Si vous souhaitez effectuer une substitution permanente, envisagez d'utiliser un outil de vente ou de vendre explicitement mypack dans votre module.

Ressource associée :

  • Comment utiliser un module qui est en dehors de "GOPATH" dans un autre module ?
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3