Go : Comprendre l'erreur « Utilisation du package interne non autorisée » dans les projets forkés
Lorsque vous travaillez avec des référentiels Go forkés, il est essentiel de comprendre les implications de la structure du référentiel et des chemins de dépendance.
Considérons un référentiel forké, tel que « zoono/go-ethereum », provenant du référentiel de base « ethereum/go-ethereum ». L'erreur rencontrée lors de l'exécution de "go test." :
eth/api.go:37:2: use of internal package not allowed
indique que le code tente d'accéder à un package interne au sein du référentiel d'origine, à savoir "github.com/ethereum/go-ethereum/internal/ethapi ."
Chemins de bifurcation et de dépendance
Pour un fonctionnement réussi, les projets Go et leurs dépendances adhèrent à des structures de répertoires et des chemins d'importation spécifiques. La création d'un référentiel ne modifie pas les chemins de dépendance dans le code, qui sont généralement relatifs au référentiel d'origine. Cela entraîne une erreur lors de la tentative d'exécution de tests sur le code forké, car les chemins de dépendance ne sont plus valides.
Résolution de l'erreur
Pour résoudre cette erreur, il est crucial de conserver la structure de répertoires du référentiel d'origine dans le référentiel forké. De plus, assurez-vous que les chemins d’importation des packages dans votre code reflètent le référentiel fork plutôt que celui d’origine. Cela implique :
Cloner votre référentiel forké dans la structure de répertoires correcte :
export GOPATH=$HOME/gocodez mkdir -p $GOPATH/src/github.com/zoono cd $GOPATH/src/github.com/zoono git clone [email protected]:<username>/go-ethereum
Modifier les chemins d'importation des packages dans votre code pour qu'ils correspondent aux référentiel forké :
// Before import "github.com/ethereum/go-ethereum/internal/ethapi" // After import "github.com/zoono/go-ethereum/internal/ethapi"
En adhérant à ces directives, vous pouvez créer et travailler efficacement avec les référentiels Go, garantissant ainsi des tests et une exécution transparents de votre code.
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!