$ go Version 1.13.3
Ich habe eine Ordnerstruktur wie folgt:
GOPATH
+---src
+--- my-api-server
+--- my-auth-server
+--- main.go
+--- my-utils
+--- uuid
+--- uuid.go
my-auth-server
verwendet my-api-server/my-utils/uuid
als eine Abhängigkeit
Als ich das GOPATH-basierte Modulsystem verwendete, funktionierte dies einwandfrei. Aber wenn geht Module verwenden, wenn ich laufe go run main.go
in my-auth-server
ihm einen Fehler zurückgegeben:
build command-line-arguments: cannot load my-api-server/my-utils/uuid: malformed module path "my-api-server/my-utils/uuid": missing dot in first path element
Irgendeine Idee, wie man das löst?
go
go-modules
Ayush Gupta
quelle
quelle
Antworten:
Die
go.mod
Datei sollte sich im Stammverzeichnis Ihres Projekts befinden (in diesem Fallmy-api-server/go.mod
).Der erste Teil des Modulpfads sollte eine Domäne / ein Pfad sein. Zum Beispiel könnte der vollständige Pfad sein
github.com/your-github-username/my-api-server
. Der Fehler, den Sie sehen, ist, dass der erste Teil keine Domain ist (mit einem Punkt). Sie müssen das Modul nicht veröffentlichen, um es zu entwickeln, aber Sie müssen einen richtigen Domainnamen verwenden.Sobald Sie einen Modulpfad haben, können Sie in diesem Modul enthaltene Pakete unter Verwendung des vollständigen Modulpfads + "/" + des relativen Pfads des Pakets importieren. Zum Beispiel,
Da
main.go
unduuid
im selben Modul enthalten sind, benötigen Sie keinerequire
Anweisung in dergo.mod
Datei, um dasuuid
Paket zu verwenden. Sie können es wie jedes andere Paket importieren und es wird funktionieren.Ich empfehle
go build
, die resultierende ausführbare Datei zu verwenden und auszuführen, anstatt sie zu verwendengo run
sicherzustellen, dass Sie alle benötigten Dateien in den Erstellungsprozess einbeziehen.Unter https://blog.golang.org/using-go-modules finden Sie eine exemplarische Vorgehensweise zur Verwendung von Go-Modulen, einschließlich des zweiten Beitrags in dieser Reihe zum Konvertieren eines Projekts zur Verwendung von Modulen.
quelle
Überprüfen Sie Ihre Importpfade in Ihrer main.go-Datei. Ich musste den gesamten Importpfad "github.com/[username‹/[project-name[/views" anstelle von [project-name] / views aufrufen, damit es auf meiner Seite funktioniert.
quelle
WEIL GO DAS MODUL NICHT FINDEN KANN !!!
Legen Sie Ihr Projekt nicht in GOPATH ... das ist so verwirrend
Stattdessen...
in .bashrc setzen: export GO111MODULE = on
Schließen Sie alle Befehlszeilenterminals und öffnen Sie die Terminals erneut
Wechseln Sie zum Projektstammordner
$ go mod init project_module_name
Dadurch wird die Datei go.mod generiert
Installieren Sie Ihre Pakete mit der gewünschten Version:
go get -v github.com/golang/[email protected]
Führen Sie dann $ aus
go run main.go
Jetzt sollte die Datei go.mod die Paketversionen aufzeichnen, die Golang zum Ausführen und Erstellen verwendet ...
Stellen Sie sicher, dass Sie die richtigen Paketversionen verwenden, indem Sie die Datei go.mod überprüfen! Es sollte so aussehen: github.com/golang/protobuf v1.3.4
quelle
Do not put your project inside GOPATH... that is so confusing
- Das ist eine Konvention, die ich besonders bevorzuge.missing dot in first path element
nichtcannot resolve module
incorrect
?