3 回答

TA貢獻1155條經驗 獲得超0個贊
您收到該錯誤的原因model
是因為生成的文件使用go_package
導入文件的 ,并且model
不是有效的導入路徑。您必須說服生成的文件使用包的完整導入路徑。
這就是我為源樹所做的:我有一個類似的相互導入的原始文件樹。如果您的模塊名為 ,github.com/myapp
則運行protoc
with --proto-path=<directory containing github.com>
,使用完整路徑(即 )導入其他 proto 文件github.com/myapp/proto/service1/service1.proto
,并在 service1.proto 中定義go_package = service1
。在我的例子中,此設置可以正確寫入導入路徑。
在采用此解決方案之前,我正在使用go_package=<full path to proto>
,因此您也可以嘗試一下。

TA貢獻1824條經驗 獲得超5個贊
在 Burak Serdar 的基礎上,我想提供我的實現。
在要導入的原型上設置類似于此的包,其中位置是完整路徑。我的路徑一般是github.com/AllenKaplan/[project]/[package]/proto/
option go_package = [path];
在您要導入的文件中添加導入。我的路徑一般是[package]/proto/[package].proto
import = [path from protoc proto path]
最后一部分是 protoc 命令,您必須以連接導入路徑和選項 go_package 路徑的方式定義 protopath
如果從github.com/AllenKaplan/[project]
目錄執行,我會調用
protoc -I. --go_out=./[package]/proto [package]/proto/[package].proto
-I. === --proto_path.
設置-I.
整個項目的原型路徑
需要注意的是,當調用要導入的protoc
文件時.proto
,您需要添加source_relative:
到輸出中,以確保輸出來自帶有一組包的根目錄。
我在調用時對導入協議的實現github.com/AllenKaplan/[project]/[package]
protoc -I./proto --go_out=paths=source_relative:./proto [package].proto

TA貢獻1829條經驗 獲得超6個贊
我在導入時也遇到了類似的問題。已使用以下內容更改了 .protoc 文件選項包。
option go_package = "./;proto-gen/service1";
第一個參數表示要生成的代碼的相對路徑。
您在命令中設置的相對于 --go_out 的路徑。
- 3 回答
- 0 關注
- 278 瀏覽
添加回答
舉報