3 回答

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

TA貢獻(xiàn)1824條經(jīng)驗(yàn) 獲得超5個(gè)贊
在 Burak Serdar 的基礎(chǔ)上,我想提供我的實(shí)現(xiàn)。
在要導(dǎo)入的原型上設(shè)置類(lèi)似于此的包,其中位置是完整路徑。我的路徑一般是github.com/AllenKaplan/[project]/[package]/proto/
option go_package = [path];
在您要導(dǎo)入的文件中添加導(dǎo)入。我的路徑一般是[package]/proto/[package].proto
import = [path from protoc proto path]
最后一部分是 protoc 命令,您必須以連接導(dǎo)入路徑和選項(xiàng) go_package 路徑的方式定義 protopath
如果從github.com/AllenKaplan/[project]
目錄執(zhí)行,我會(huì)調(diào)用
protoc -I. --go_out=./[package]/proto [package]/proto/[package].proto
-I. === --proto_path.
設(shè)置-I.
整個(gè)項(xiàng)目的原型路徑
需要注意的是,當(dāng)調(diào)用要導(dǎo)入的protoc
文件時(shí).proto
,您需要添加source_relative:
到輸出中,以確保輸出來(lái)自帶有一組包的根目錄。
我在調(diào)用時(shí)對(duì)導(dǎo)入?yún)f(xié)議的實(shí)現(xiàn)github.com/AllenKaplan/[project]/[package]
protoc -I./proto --go_out=paths=source_relative:./proto [package].proto

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超6個(gè)贊
我在導(dǎo)入時(shí)也遇到了類(lèi)似的問(wèn)題。已使用以下內(nèi)容更改了 .protoc 文件選項(xiàng)包。
option go_package = "./;proto-gen/service1";
第一個(gè)參數(shù)表示要生成的代碼的相對(duì)路徑。
您在命令中設(shè)置的相對(duì)于 --go_out 的路徑。
- 3 回答
- 0 關(guān)注
- 295 瀏覽
添加回答
舉報(bào)