L'un des codes de microservice basés sur go-lang nécessite de se connecter au code de chaîne de fabric, cela fonctionnait bien jusqu'à la dernière fois, aucun problème jusqu'à présent.
Mais maintenant, il montre le problème suivant lors de la création du microservice basé sur go qui a un code client de fabric pour se connecter au code de chaîne de fabric.
../../vendor/github.com/hyperledger/fabric-sdk-go/internal/github.com/hyperledger/fabric-ca/util/csp.go:47:8: impossible de convertir nul pour taper csr.KeyRequest ../../vendor/github.com/hyperledger/fabric-sdk-go/internal/github.com/hyperledger/fabric-ca/util/csp.go:132:37: impossible d'utiliser req.KeyRequest (type * csr.KeyRequest) comme type csr.KeyRequest dans l'argument de getBCCSPKeyOpts
Peut-être que c'est un problème de dépendance, j'ai nettoyé le répertoire complet du fournisseur et je me suis assuré de --update, mais cela montre le même problème,
Plus d'informations:
Aller à la version 1.12
Sur GoPkg.Toml
[[override]] name = "github.com/hyperledger/fabric" branche = "maître"
[[override]] name = "github.com/hyperledger/fabric-sdk-go" branche = "maître"
J'ai essayé différentes combinaisons et différentes branches de fabric-sdk-go, cela montre toujours la même chose, même si cela fonctionnait bien auparavant.
5 Réponses :
J'ai trouvé la cause principale de ce problème, c'est comme de fréquents correctifs / développement incrémentiels sur fab-sdk-go, et j'ai défini la version principale de fab-sdk-go sur mon code, et celle-ci doit être récupérée depuis Gopkg fichier .toml.
Il m'a fallu appliquer manuellement différentes versions de fab-sdk-go par dates, pour déterminer quelle est la meilleure version de fab-sdk-go, c'est-à-dire cette version qui ne posera aucun problème de compilation comme ci-dessus. p>
Et une fois appliqué la version suivante:
FAB-SDK-Go [FABG-815] effectue des erreurs multiples sur une seule ligne: 56ebf9adac580e7e3251685fe4fe6e793df838dc, https://github.com/hyperledger/fabric-sdk-go/commit/56ebf9adac580e7e3251685fe4fe6e793df838dc
Cela n'a donné aucune erreur et cela a fonctionné.
Même j'ai postulé pour des versions comme alpha1, alpha2, aplha3 ainsi que pour fab-sdk-go, mais encore une fois, cela a posé des problèmes de compilation.
J'ai essayé de aller chercher -v github.com/hyperledger/fabric-sdk-go@56ebf9adac580e7e3251685 fe4fe6e793df838dc mais j'ai toujours les mêmes problèmes de compilation: /
En fait, j'ai cloné le Fabrick-SDK-Go sur mon gopath, puis j'ai à nouveau fait la vérification git 56ebf9adac580e7e3251685fe4fe6e793df838dc pour cette version spécifique, et supprimé Fabric-SDK-Go de mon répertoire de fournisseur, de sorte que 56ebf9adac580e7e3251685fe4fe6e79 a choisi la version. Veuillez également vérifier les autres révisions à partir d'ici github.com/hyperledger/fabric-sdk-go / commits / master
Il semble qu'il y ait eu de nombreux changements sur les paquets dont dépend fabric-sdk-go, depuis la sortie de 1.0.0-alpha5.
Quand je lance go build maintenant avec une seule importation de dépendance externe (github.com/hyperledger/fabric-sdk-go), j'ai le fichier go.mod suivant, (j'utilise go mod code > pour la gestion des paquets)
...
require (
github.com/cloudflare/cfssl v0.0.0-20190409034051-768cd563887f // indirect
github.com/go-kit/kit v0.8.0 // indirect
github.com/go-logfmt/logfmt v0.4.0 // indirect
github.com/golang/mock v1.3.0 // indirect
github.com/google/certificate-transparency-go v1.0.21 // indirect
github.com/hyperledger/fabric-lib-go v1.0.0 // indirect
github.com/hyperledger/fabric-sdk-go v1.0.0-alpha5
github.com/pkg/errors v0.8.1 // indirect
github.com/prometheus/client_golang v0.9.2 // indirect
github.com/spf13/viper v1.3.2 // indirect
google.golang.org/grpc v1.20.1 // indirect
)
qui contient des paquets de version de pointe et semble poser quelques problèmes de construction comme ci-dessous, y compris ce que vous aviez.
# github.com/hyperledger/fabric-sdk-go/internal/github.com/hyperledger/fabric/core/operations
../../Go/pkg/mod/github.com/hyperledger/fabric-sdk-go@v1.0.0-alpha5/internal/github.com/hyperledger/fabric/core/operations/system.go:185:43: undefined: "github.com/prometheus/client_golang/prometheus".Handler
../../Go/pkg/mod/github.com/hyperledger/fabric-sdk-go@v1.0.0-alpha5/internal/github.com/hyperledger/fabric/core/operations/system.go:227:23: not enough arguments in call to s.statsd.SendLoop
have (<-chan time.Time, string, string)
want (context.Context, <-chan time.Time, string, string)
# github.com/hyperledger/fabric-sdk-go/internal/github.com/hyperledger/fabric-ca/util
../../Go/pkg/mod/github.com/hyperledger/fabric-sdk-go@v1.0.0-alpha5/internal/github.com/hyperledger/fabric-ca/util/csp.go:46:8: cannot convert nil to type csr.KeyRequest
../../Go/pkg/mod/github.com/hyperledger/fabric-sdk-go@v1.0.0-alpha5/internal/github.com/hyperledger/fabric-ca/util/csp.go:131:37: cannot use req.KeyRequest (type *csr.KeyRequest) as type csr.KeyRequest in argument to getBCCSPKeyOpts
J'ai écrit le fichier go.mod manuellement pour contenir des versions spécifiques de dépendances lorsque j'ai réussi la construction la dernière fois.
...
require (
github.com/cloudflare/cfssl v0.0.0-20190726000631-633726f6bcb7 // indirect
github.com/go-kit/kit v0.9.0 // indirect
github.com/golang/mock v1.3.1 // indirect
github.com/golang/protobuf v1.3.2 // indirect
github.com/google/certificate-transparency-go v1.0.21 // indirect
github.com/hyperledger/fabric-lib-go v1.0.0 // indirect
github.com/hyperledger/fabric-sdk-go v1.0.0-alpha5
github.com/pkg/errors v0.8.1 // indirect
github.com/prometheus/client_golang v1.0.0 // indirect
github.com/spf13/viper v1.4.0 // indirect
github.com/zmap/zlint v0.0.0-20190730215301-9971d62266e7 // indirect
golang.org/x/net v0.0.0-20190724013045-ca1201d0de80 // indirect
google.golang.org/grpc v1.22.1 // indirect
)
et cela fonctionne bien.
Merci beaucoup pour plus d'informations, comme la version spécifique à utiliser pour diverses dépendances, je vais les appliquer à mes affaires et ensuite mettre à jour ici comme comment cela se passe.
J'ai essayé, bien sûr, le problème de cfssl a disparu, mais ce problème persiste: # github.com/hyperledger/fabric-sdk-go/internal/github.com/hyph erledger / fabric / core / operations ../../ ../../pkg/mod/github.com/hyperledger/fabric-sdk-go@v1. 0.0-alpha5 / internal / github.com/hyperledger / fabric / core / opera tions / system.go: 185: 43: undefined: "github.com/prometheus/client_golang/prometheus".Handler make [1]: *** [build-only] Erreur 2 en faisant go get this disparaît: github.com / prometheus / client_golang
Nettoyer go.mod tous nécessitent
go mod tidy
go get github.com/hyperledger/fabric-sdk-go@master
puisque KeyRequest n'a pas d'instance, il ne peut pas être converti en nil. Vous n'avez que la variable kr qui contient les valeurs de la structure KeyRequest, qui sont la chaîne A et int S. Vous pouvez essayer de modifier le csp.go comme "if kr.A ==" "&& (kr.S! = 2048 | | kr.S! = 3072 || kr.S! = 4096) "à la ligne 48.
La cause du problème est un changement radical dans la version 1.3.4 de github.com/cloudflare/cfssl/csr .
Installez simplement 1.3.3 avec la commande ci-dessous et la dernière version de fabric-sdk-go fonctionne sans aucun problème.
go get github.com/cloudflare/cfssl@1.3.3