web-dev-qa-db-fra.com

Le fichier ne réside dans aucun chemin spécifié à l'aide de proto_path

Je teste l'importation du fichier .proto depuis un autre répertoire.

$ GOPATH/src/A/A.proto

syntax = "proto3"; 
package A;
 message SomeMsg {
     string  msg = 2;
     int64   id  = 3;
 }

$ GOPATH/src/B/B.proto

syntax = "proto3"; 
package B; import "A/A.proto";
 message Msg {
     SomeMsg s = 1;
 }

Je fais ça: dans le dossier A:

protoc A.proto --go_out=.

puis dans le dossier B:

protoc B.proto --go_out=. --proto_path=$GOPATH/

Mais j'obtiendrai cette erreur:

B.proto: le fichier ne réside dans aucun chemin spécifié à l'aide de --proto_path (ou -I). Vous devez spécifier un --proto_path qui englobe ce fichier. Notez que le proto_path doit être un préfixe exact des noms de fichiers .proto - protocole est trop stupide pour savoir quand deux chemins (par exemple absolu et relatif) sont équivalents (c'est plus difficile que vous ne le pensez).

7
Cubey Mew

L'erreur me semble assez claire, cela signifie que vous devez spécifier le répertoire exact dans lequel se trouve B.proto

protoc B.proto --go_out=. --proto_path=$GOPATH/src/B 

ou si vous êtes déjà dans le dossier B,

protoc B.proto --go_out=.

Les gars du protocole sont drôles c'est plus difficile que vous ne le pensez !!! Lol, pourquoi suis-je contre le désir de dire "C'est ce qu'elle a dit!" Lol

2
Popmedic