$ 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
les usages my-api-server/my-utils/uuid
comme une dépendance
Maintenant, quand j'ai utilisé le système de modules basé sur GOPATH, cela a bien fonctionné. Mais lorsque j'utilise des modules go, lorsque j'exécute go run main.go
dans my-auth-server
il a renvoyé une 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?
Le go.mod
le 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,
import "github.com/your-github-username/my-api-server/my-utils/uuid"
Puisque main.go
et uuid
sont contenus dans le même module, vous n'avez pas besoin d'une instruction require
dans le go.mod
fichier pour utiliser le package uuid
. Vous pouvez l'importer comme n'importe quel autre package et cela fonctionnera.
Je recommande d'utiliser go build
et en exécutant l'exécutable résultant plutôt que d'utiliser go 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 façon de convertir un projet pour utiliser des modules.
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é.