percorso del modulo non corretto "xxxx / xxxx / uuid" punto mancante nel primo elemento del percorso durante la migrazione da dep basato su GOPATH per passare alla mod


12
$ go version
1.13.3

Ho una struttura di cartelle come segue:

GOPATH
+---src
     +--- my-api-server
           +--- my-auth-server
                 +--- main.go
           +--- my-utils
                 +--- uuid
                       +--- uuid.go

my-auth-serverusa my-api-server/my-utils/uuidcome una dipendenza

Ora, quando ho usato il sistema di moduli basato su GOPATH, ha funzionato bene. Ma quando si usano moduli andare, quando corro go run main.goin my-auth-serveresso errore riscontrato:

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

Qualche idea su come risolverlo?


Risposte:


10

Il go.modfile dovrebbe essere alla radice del progetto (in questo caso, my-api-server/go.mod).

La prima parte del percorso del modulo dovrebbe essere un dominio / percorso. Ad esempio, potrebbe essere il percorso completo github.com/your-github-username/my-api-server. L'errore che stai vedendo è perché la prima parte non è un dominio (con un punto). Non è necessario pubblicare il modulo per svilupparlo, ma è necessario utilizzare un nome di dominio appropriato.

Una volta che hai un percorso del modulo, puoi importare i pacchetti contenuti in quel modulo usando il percorso completo del modulo + "/" + il percorso relativo del pacchetto. Per esempio,

import "github.com/your-github-username/my-api-server/my-utils/uuid"

Poiché main.goe uuidsono contenuti nello stesso modulo, non è necessaria requireun'istruzione nel go.modfile per utilizzare il uuidpacchetto. Puoi importarlo come qualsiasi altro pacchetto e funzionerà.

Ti consiglio di utilizzare go builded eseguire l'eseguibile risultante anziché utilizzare go runper assicurarti di includere tutti i file necessari nel processo di compilazione.

Vedi https://blog.golang.org/using-go-modules per una procedura dettagliata su come usare i moduli Go, incluso il secondo post di quella serie su come convertire un progetto per usare i moduli.


1

Controlla i tuoi percorsi di importazione sul tuo file main.go. Ho dovuto chiamare l'intero percorso di importazione "github.com/[username×/[project-name[/views invece di [nome-progetto] / viste per farlo funzionare dalla mia parte.


-1

PERCHÉ GO NON PU FIN TROVARE IL MODULO !!!

Non mettere il tuo progetto dentro GOPATH ... è così confuso

Anziché...

impostato in .bashrc: export GO111MODULE = on

chiudere tutti i terminali della riga di comando, quindi riaprire i terminali

vai alla cartella principale del progetto

$ go mod init project_module_name

Questo genererà il file go.mod

Installa i tuoi pacchetti con la versione che desideri: go get -v github.com/golang/protobuf@v1.3.4

Quindi eseguire $ go run main.go

Ora il file go.mod dovrebbe registrare le versioni del pacchetto che Golang utilizzerà per eseguire e compilare ...

Assicurati di utilizzare le versioni del pacchetto corrette controllando il file go.mod! Dovrebbe apparire come: github.com/golang/protobuf v1.3.4


Do not put your project inside GOPATH... that is so confusing- Questa è una convenzione, che preferisco particolarmente.
Ayush Gupta,

Inoltre, l'errore missing dot in first path elementnon ècannot resolve module
Ayush Gupta il

Ayush Gupta, l'errore è causato dall'errato utilizzo del modulo
Russo

Definire incorrect?
Ayush Gupta,

versioni di pacchetto errate hanno percorso file errato => causa Golang non è in grado di trovare il file corretto da eseguire o compilare
Russo
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.