Maison > Article > développement back-end > Comment résoudre les dépendances conflictuelles du module Go lorsque le niveau supérieur et le sous-module sont importés sous des versions différentes ?
Les dépendances du module Go peuvent parfois conduire à des conflits lorsqu'un module de niveau supérieur Le module et l'un de ses sous-modules sont importés séparément sous des versions différentes. Explorons ce problème et trouvons une solution.
Présentation du problème
Lorsque vous avez deux dépendances dans un projet, comme indiqué dans le fichier go.mod ci-dessous, le go La commande mod download peut entraîner le téléchargement de différentes versions d'un sous-module partagé.
module github.com/test-org/test-repo go 1.12 require ( github.com/foo/bar v1.0.0 github.com/raz/mataz v1.0.0 )
Cela peut conduire à des erreurs d'importation ambiguës lors de l'importation du sous-module dans votre code, car l'outil go n'est pas sûr quelle version choisir.
Solution
Le problème se pose lorsque l'une des dépendances fait référence à une version pré-go-modules du sous-module. Cette importation de boîte noire de l'intégralité du référentiel est en conflit avec la référence du module au sous-module.
Pour résoudre ce conflit, vous pouvez forcer les références à la dépendance partagée à utiliser des versions compatibles go-module. Ajoutez la ligne suivante à votre fichier go.mod :
replace ( github.com/shared/dependency => github.com/shared/dependency v1.2.0 )
Assurez-vous que la version spécifiée (v1.2.0 dans cet exemple) est compatible avec le module go (possède un fichier go.mod).
Cette solution fonctionne car elle garantit que toutes les références à la dépendance partagée utilisent les versions du module, éliminant ainsi le conflit d'importation de boîte noire qui a conduit à l'erreur d'importation ambiguë.
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!