web-dev-qa-db-fra.com

chemin de module mal formé "xxxx / xxxx / uuid" point manquant dans le premier élément de chemin lors de la migration de dep basé sur GOPATH vers go mod

 $ 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?

12
Ayush Gupta

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.

8

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é.

1
Nathaniel Rand