Heim >Backend-Entwicklung >Golang >Warum wirft Go Modules den Fehler „Ersatzmodul ohne Version muss Verzeichnispfad sein (gerootet oder beginnend mit …)' aus?
go-Module – „Ersatzmodul ohne Version muss Verzeichnispfad sein (root oder beginnend mit …“) Glitch
Im Kontext Bei Go-Modulen können Sie mit der Anweisung „replace“ ein Modul durch einen lokalen Pfad ersetzen. Für diese Anweisung gilt jedoch eine besondere Anforderung: Der Pfad muss entweder im Stammverzeichnis (beginnend mit „/“) oder relativ zum Stammverzeichnis des Moduls angegeben sein.
Verstehen des Problems
Im bereitgestellten Szenario führte ein Versuch, ein lokales Paket (mypack) innerhalb eines Go-Moduls (goweb) zu verwenden, zu folgendem Fehler: „Ersatzmodul ohne Version muss Verzeichnispfad sein (gerootet oder beginnend mit .)“ Dieser Fehler gibt an, dass der Pfad Der für die Ersetzungsanweisung angegebene Pfad entspricht nicht dem erforderlichen Format.
Beheben des Problems
Um dieses Problem zu beheben, stellen Sie sicher, dass der Pfad für die Ersetzungsanweisung die folgenden Bedingungen erfüllt :
Lösung
Im Fall des Goweb-Moduls ist die richtige Ersetzungsanweisung die richtige, da mypack ein Geschwister seines Stammverzeichnisses ist ist:
<code class="go">replace mypack => ../mypack</code>
Damit dieser Ersatz effektiv funktioniert, muss mypack außerdem in ein Go-Modul konvertiert werden, indem eine go.mod-Datei zu seinem Verzeichnis hinzugefügt wird. Dies kann durch Ausführen des Befehls go mod init mypack im mypack-Verzeichnis erfolgen.
Andere Überlegungen
Wenn die App und das von ihr verwendete Paket Teil derselben sind go-Modul, das Hinzufügen zu go.mod ist nicht erforderlich. Ein einfacher Verweis auf das Paket im Code reicht aus.
Ressourcen
Das obige ist der detaillierte Inhalt vonWarum wirft Go Modules den Fehler „Ersatzmodul ohne Version muss Verzeichnispfad sein (gerootet oder beginnend mit …)' aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!