Maison > développement back-end > Golang > le corps du texte

go grpc : impossible d'importer github.com/golang/protobuf/proto (aucun module requis ne fournit le package 'github.com/golang/protobuf/proto')

王林
Libérer: 2024-02-09 09:00:11
avant
1180 Les gens l'ont consulté

go grpc:无法导入github.com/golang/protobuf/proto(没有必需的模块提供包“github.com/golang/protobuf/proto”)

L'éditeur PHP Zimo a rencontré une erreur lors de l'utilisation de go grpc, indiquant que le module "github.com/golang/protobuf/proto" n'a pas pu être importé. Cette erreur est généralement causée par des modules requis manquants. Avant d'utiliser go grpc, nous devons nous assurer que la bibliothèque protobuf a été correctement installée et que les packages proto pertinents ont été correctement importés dans le code. Ensuite, je présenterai en détail comment résoudre ce problème.

Contenu de la question

Lorsque "protoc --proto_path=proto proto/*.proto --go_out=plugins", le fichier proto importe "github.com/golang/protobuf/proto" au lieu de "google.golang.org " /protobuf/proto” =grpc:pb” commande

Importer des fichiers

import (
    fmt "fmt"
    proto "github.com/golang/protobuf/proto"
    math "math"
)
...
> This is a compile-time assertion to ensure that this generated file
// is compatible with the proto package it is being compiled against.
// A compilation error at this line likely means your copy of the
// proto package needs to be updated.
const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
Copier après la connexion

Mon fichier prototype

syntax="proto3";

message Processor{

    string name=1;
    uint32 cores=2;
    uint32 min_ghz=3;
    uint32 max_ghz=4; 
}
Copier après la connexion

~go/bin/protoc-gen-go-grpc a une version

go: downloading google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.3.0
go: downloading google.golang.org/grpc v1.58.2
go: downloading google.golang.org/protobuf v1.28.1
Copier après la connexion

Qu'est-ce que j'ai fait

Installation initiale

$ allez installer google.golang.org/protobuf/cmd/[email protected]

$ allez installer google.golang.org/grpc/cmd/[email protected]

Tapez go clean -modcache avant d'installer de nouveaux packages et réinstallez la dernière version en utilisant le commentaire @latest

version go : version go1.21.1 linux/amd64

sur Ubuntu 20.4

Protocole--Version libprotoc 3.6.1

Installation du compilateur protobuf et golang-goprotobuf à l'aide d'apt

sudo apt install protobuf-compiler
sudo apt install golang-goprotobuf -dev
export PATH="$PATH:$(go env GOPATH)/bin"
Copier après la connexion

Je pense que le problème est là mais je ne sais pas quoi résoudre ni comment lire ceci

go mod graph | grep github.com/golang/protobuf

example-first github.com/golang/[email protected]
github.com/golang/[email protected] github.com/google/[email protected]
github.com/golang/[email protected] google.golang.org/[email protected]
google.golang.org/[email protected] github.com/golang/[email protected]
google.golang.org/[email protected] github.com/golang/[email protected]
github.com/golang/[email protected] github.com/google/[email protected]
github.com/golang/[email protected] google.golang.org/[email protected]


go mod why github.com/golang/protobuf

go: downloading github.com/golang/protobuf v1.5.3
go: downloading github.com/google/go-cmp v0.5.5
go: downloading golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543
# github.com/golang/protobuf
(main module does not need package github.com/golang/protobuf)
Copier après la connexion

EDIT : je pense que je l'ai installé à l'origine en utilisant go get -u github.com/golang/protobuf/proto mais j'ai supprimé le binaire en utilisant rm -rf $(go env GOPATH)/pkg/mod/github.com/golang file/ protobuf/proto et installez la nouvelle version en utilisant go install google.golang.org/protobuf/cmd/protoc-gen-go@latest et allez installer google.golang.org/grpc/cmd/protoc-gen-go-grpc@ Newest . Il génère toujours des fichiers go en utilisant les anciennes importations

Edit2 : protoc-gen-go --version introuvable, mais protoc-gen-go-grpc --version est 1.2.0. protoc --La version est libprotoc 3.6.1 où est le protocole-gen-go protoc-gen-go:/usr/bin/protoc-gen-go /home/hp/go/bin/protoc-gen-go /usr/share/man/man1/protoc-gen-go.1.gz

La solution

est la suivante https://www.php.cn/link/a5481cd6d7517aa3fc6476dc7d9019ab<中提到的/a> Auteur : @puellanivis

Dans un environnement Linux $PATH 变量应以 /home/{username}/go/bin 开头,然后按顺序以 /usr/bin 开头。这是因为我们需要在 /usr/bin/protoc-gen-go 之前找到 google.golang.org/gprc/cmd/protoc-gen-go-grpc@latest.

Edit ~/.bashrc~/.bash_profile 文件 ($vim ~/.bashrc) et exportez manuellement l'intégralité de l'environnement du chemin. Dans mon cas, je dois ajouter

export PATH=/home/hp/go/bin:/usr/local/go:/home/hp/go:usr/local/go/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
Copier après la connexion

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:stackoverflow.com
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!