Heim  >  Artikel  >  Backend-Entwicklung  >  Wie löst man Abhängigkeitskonflikte zwischen Go-Modulen und Importen von Top-Level- und Untermodulen?

Wie löst man Abhängigkeitskonflikte zwischen Go-Modulen und Importen von Top-Level- und Untermodulen?

Barbara Streisand
Barbara StreisandOriginal
2024-11-03 22:04:30230Durchsuche

How to Resolve Go Module Dependency Conflicts with Top-Level and Sub-module Imports?

Auflösen von Go-Modul-Abhängigkeitskonflikten mit Importen von Top-Level- und Sub-Modulen

Dieses Problem tritt auf, wenn ein Top-Level-Modul und eines davon Seine Untermodule werden separat als unterschiedliche Versionen importiert, was zu widersprüchlichen Abhängigkeiten führt. Stellen Sie sich ein Szenario vor, in dem Ihr Projekt zwei Abhängigkeiten hat: github.com/foo/bar und github.com/raz/mataz. Beim Ausführen von „go mod download“ werden aufgrund des Vorhandenseins von Untermodulen zwei verschiedene Versionen von github.com/shared/dependency heruntergeladen.

Die Überprüfung der heruntergeladenen Module zeigt mehrere heruntergeladene Versionen:

  • ${GOPATH}/pkg/mod/github.com/shared/[email protected]: Enthält den gesamten Repository-Inhalt, einschließlich Untermodulen.
  • ${GOPATH}/pkg/mod /github.com/shared/dependency/[email protected]: Enthält nur das API-Submodul.

Diese Nichtübereinstimmung führt zu einem mehrdeutigen Importfehler beim Versuch, github.com/ zu importieren. geteilt/Abhängigkeit/API. Das Go-Tool kann aufgrund widersprüchlicher Versionen in beiden Verzeichnissen nicht ermitteln, welche Version verwendet werden soll.

Lösung: Abhängigkeitsversionen aktualisieren

Die Hauptursache für dieses Problem ist häufig im Zusammenhang mit der Versionierung von Pre-Go-Modulen innerhalb der widersprüchlichen Abhängigkeiten. Durch das Hinzufügen der folgenden Zeile zu Ihrer go.mod-Datei werden die widersprüchlichen Abhängigkeiten gezwungen, go-modulfähige Versionen zu verwenden:

replace (
    github.com/shared/dependency => github.com/shared/dependency v1.2.0
)

Dadurch werden Verweise auf github.com/shared/dependency effektiv dazu gezwungen, mit go kompatible Versionen zu verwenden Module, wodurch das widersprüchliche Abhängigkeitsproblem gelöst wird. Es ist wichtig zu beachten, dass diese Lösung funktioniert, da alle Verweise auf die gemeinsame Abhängigkeit auf Go-Modul-fähige Versionen verwiesen werden.

Das obige ist der detaillierte Inhalt vonWie löst man Abhängigkeitskonflikte zwischen Go-Modulen und Importen von Top-Level- und Untermodulen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn