Maison > développement back-end > Golang > Pourquoi est-ce que j'obtiens l'erreur « Le package XXX n'est pas dans GOROOT » dans mon projet Go ?

Pourquoi est-ce que j'obtiens l'erreur « Le package XXX n'est pas dans GOROOT » dans mon projet Go ?

Susan Sarandon
Libérer: 2024-12-19 00:11:10
original
958 Les gens l'ont consulté

Why Am I Getting the

Erreur « le package XXX n'est pas dans GOROOT » dans les projets Go

Cette erreur se produit souvent lorsque vous essayez de créer ou d'exécuter un projet Go et rencontre le scénario suivant :

  • Le projet est structuré comme suit :

    src/
    |--project
       |--game
           |--entity
               |--whatever.go
           |--game_stuff.go
       |--server
    Copier après la connexion
  • GOROOT est défini sur le chemin correct (par exemple, C:Go).

Cause

Dans les versions récentes de Go (post 1.13), la définition de variables d'environnement comme GOPATH et GOBIN n'est plus nécessaire. Au lieu de cela, le projet doit contenir un fichier go.mod à sa racine, qui le désigne comme un module Go.

Résolution

Pour résoudre ce problème, suivez ces étapes :

  1. Créez un fichier go.mod : Dans le répertoire racine du projet, exécutez go mod init [remote-repo.com/username/repository].
  2. Définissez le package principal : Dans le fichier go.mod, spécifiez le chemin du package principal (par exemple, github.com /yourname/calculatorv3) et son fichier principal (par exemple, main.go).
  3. Supprimer l'environnement obsolète variables : Si vous aviez déjà défini GOPATH et GOBIN, supprimez ou commentez ces lignes de la configuration de votre environnement.
  4. Reconstruisez ou exécutez le projet : Réexécutez le go build ou go run commande, qui reconnaîtra désormais correctement la structure du projet et construira ou exécutera le fichier approprié. package.

Exemple

Pour l'exemple de structure de projet fourni :

  1. Créez un fichier go.mod dans le répertoire racine du projet et incluez ce qui suit :

    module github.com/myorg/myproject
    
    go 1.17
    
    require (
     github.com/myorg/gameutils v1.2.3
    )
    Copier après la connexion
  2. Assurez-vous que main.go se trouve dans le projet/serveur répertoire.
  3. Supprimez ou commentez les variables d'environnement obsolètes :

    # GOPATH=$HOME/go  # Assuming previous GOPATH setting
    Copier après la connexion
  4. Réexécutez go build -o server project/server pour construire le projet.

Notes supplémentaires

  • Si le projet utilise des packages externes, assurez-vous qu'ils sont installés à l'aide de go get ou allez mod spice.
  • Si l'erreur persiste, essayez de vider le cache Go en utilisant go clean -modcache.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal