'protoc-gen-go: unable to determine Go import path for "simple.proto"
I have simple proto file with following content.
syntax="proto3";
package main;
message Person {
string name = 1;
int32 age = 2;
}
I am trying to generate go code for it using protoc. I run:
protoc --go_out=. simple.proto
I receive following error:
protoc-gen-go: unable to determine Go import path for "simple.proto"
Please specify either:
• a "go_package" option in the .proto source file, or
• a "M" argument on the command line.
main.go
, go.mod
and simple.proto
is in the same folder. Both protoc
and protoc-gen-go
are defined in PATH enviroement.
Solution 1:[1]
You are missing option go_package.
The name you will give to option go_package
will be the name of the package that will be generated by the protoc. By doing so, you can import thus access message fields.
Solution 2:[2]
You forgot to linkedlist the file with it by adding:
option go_package = "./";
You need to linkedlist it first to make it work. It was same issues here
Solution 3:[3]
Protoc requires that the package be specified, then the solution is to add
option go_package = "./your-package-name";
to make your file looks like the following:
syntax="proto3";
package main;
option go_package = "./your-package-name";
message Person {
string name = 1;
int32 age = 2;
}
then you can run the command e.g:
protoc -I src/ --go_out=src/ src/simple/simple.proto
where --go_out=src/
specifies where your file will be generated then the relative path to your proto file.
Note: Don't forget to prefix the option go_package
with ./
Solution 4:[4]
I have a similar problem.
I thought protocol buffers were supposed to be language neutral. If we are adding go_package to the proto files, then if we try to compile these proto files to a different language, we will have to make changes to the files.
The solutions I have seen works if you are looking at generating only go files.
Solution 5:[5]
first make sure you installed compiler correctly
sudo apt install protobuf-compiler
sudo apt install golang-goprotobuf-dev
use this command
protoc -I=src/ --go_out=src/ src/simple.proto
-I = IPATH -Specify the directory in which to search for imports
--go_out= output directory
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | blockByblock |
Solution 2 | Panji Tri Wahyudi |
Solution 3 | |
Solution 4 | Future Man |
Solution 5 |