$ go version 1.13.3
J'ai une structure de dossiers comme suit:
GOPATH
+---src
+--- my-api-server
+--- my-auth-server
+--- main.go
+--- my-utils
+--- uuid
+--- uuid.go
my-auth-server
utilise my-api-server/my-utils/uuid
comme dépendance
Maintenant, quand j'ai utilisé le système de modules basé sur GOPATH, cela a bien fonctionné. Mais lors de l' utilisation des modules aller, quand je lance go run main.go
dans my-auth-server
son retour d' erreur:
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
Aucune idée sur la façon de résoudre ça?
go
go-modules
Ayush Gupta
la source
la source
Réponses:
Le
go.mod
fichier doit être à la racine de votre projet (dans ce cas,my-api-server/go.mod
).La première partie du chemin du module doit être un domaine / chemin. Par exemple, le chemin complet peut être
github.com/your-github-username/my-api-server
. L'erreur que vous voyez est que la première partie n'est pas un domaine (avec un point). Vous n'avez pas à publier le module pour le développer, mais vous devez utiliser un nom de domaine correct.Une fois que vous avez un chemin de module, vous pouvez importer des packages contenus dans ce module en utilisant le chemin de module complet + "/" + le chemin relatif du package. Par exemple,
Depuis
main.go
etuuid
sont contenus dans le même module, vous n'avez pas besoin d'unerequire
instruction dans lego.mod
fichier pour utiliser leuuid
package. Vous pouvez l'importer comme n'importe quel autre package et cela fonctionnera.Je recommande d'utiliser
go build
et d'exécuter l'exécutable résultant plutôt que de l'utilisergo run
pour vous assurer d'inclure tous les fichiers dont vous avez besoin dans le processus de génération.Voir https://blog.golang.org/using-go-modules pour une procédure pas à pas sur l'utilisation des modules Go, y compris le deuxième article de cette série sur la conversion d'un projet en modules.
la source
Vérifiez vos chemins d'importation sur votre fichier main.go. J'ai dû appeler l'intégralité du chemin d'importation "github.com/[nom_utilisateur/10/−nom-projet94/views au lieu de [nom-projet] / vues pour que cela fonctionne de mon côté.
la source
PARCE QUE GO NE PEUT PAS TROUVER LE MODULE !!!
Ne mettez pas votre projet dans GOPATH ... c'est tellement déroutant
Au lieu...
défini dans .bashrc: export GO111MODULE = on
fermez tous les terminaux de ligne de commande, puis rouvrez les terminaux
allez dans le dossier racine du projet
$ go mod init nom_module_projet
Cela va générer un fichier go.mod
Installez vos packages avec la version que vous souhaitez:
go get -v github.com/golang/[email protected]
Exécutez ensuite $
go run main.go
Maintenant, le fichier go.mod devrait enregistrer les versions du package que Golang utilisera pour exécuter et construire ...
Assurez-vous que vous utilisez les versions de package correctes en vérifiant le fichier go.mod! Il devrait ressembler à: github.com/golang/protobuf v1.3.4
la source
Do not put your project inside GOPATH... that is so confusing
- C'est une convention que je préfère particulièrement.missing dot in first path element
pascannot resolve module
incorrect
?