亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

了解 protobuf 導入和輸出相對路徑

了解 protobuf 導入和輸出相對路徑

Go
森欄 2022-06-01 11:17:40
我相當肯定這是操作員錯誤,我現在沒有清楚地思考。這是設置:$GOPATH/src/github.com/<company>/<service a>/proto/a.proto$GOPATH/src/github.com/<company>/<service b>/proto/b.proto等等現在在 proto 文件中,我使用類似于 go(可能是問題)的導入,例如a.proto: import "github.com/<company>/<service b>/b.proto"我可能有兩個不同的問題。我無法使用正確編譯導入go:generate protoc我無法將輸出a.pb.go文件放置在$GOPATH/src/github.com/<company>/<service a>/proto/路徑中。我嘗試了多種配置,可能組合不正確。 Using option go_package = "github.com/<company>/<service b>/proto"在每個.proto文件中go generate 的多種變體;go:generate protoc --proto_path=.:$GOPATH/src --go_out=$GOPATH/src a.protogo:generate protoc --proto_path=.:$GOPATH/src --go_out=. a.proto go:generate protoc --go_out=import_prefix=github.com/<company>/:. api.proto我顯然對 protoc 如何看待導入路徑和文件輸出的理解很差。有人指出我做錯了什么的方向嗎?謝謝!更新 #1 在 a.proto 中;option go_package = "github.com/<company>/<service a>/proto";import "github.com/<company>/<service b>/proto/b.proto";和去生成;//go:generate protoc --proto_path=$GOPATH/src --go_out=$GOPATH/src/github.com/<company>/<service a>/proto a.proto使用 a.proto 從 proto 目錄中的 go 文件調用它。我收到了錯誤;a.proto:文件不在使用--proto_path(或-I)指定的任何路徑中。您必須指定一個 --proto_path ch 包含此文件。請注意,proto_path 必須是 .proto 文件名的精確前綴—— protoc 太笨了,無法確定兩個路徑(例如絕對路徑和相對路徑)何時相等(這比您想象的要難)。我已經確認 $GOPATH 到了預期的位置。解決方案感謝 Shivam Jindal 為我指明了正確的方向。導入與他的解決方案中描述的完全一樣。輸出是我濫用 --go_out 和選項 go_package 的問題。我使用 go_package 指定輸出位置,使用 --go_out 指定類似于 --proto_path 的根目錄?,F在一切正常。option go_package = "github.com/<company>/<service a>/proto";和//go:generate protoc --proto_path=$GOPATH/src/ --go_out=$GOPATH/src/ $GOPATH/src/github.com/<company>/<service a>/proto/a.proto謝謝!
查看完整描述

1 回答

?
鴻蒙傳說

TA貢獻1865條經驗 獲得超7個贊

首先,option go_package根本不用于其他依賴項導入,它是 Go 包名稱,(a.pb.go file)將放置 Go 的新 proto 綁定。

現在來到輸出文件位置,我可以看到你正在使用 go-generate。--go_out=首先,如果使用的路徑是相對路徑,則取決于您從哪個目錄調用。我會說使用絕對路徑。如果您想將輸出文件放在您提到的那個位置,請--go_out=$GOPATH/src/github.com/<company>/<service a>/proto/在 go-generate 中使用。

要正確導入其他文件b.proto,請a.proto使用完全限定的導入路徑。就--proto_path $GOPATH/src在 go-generate 中使用。另外,請使用您看到的錯誤更新問題,以防它不起作用。

有關導入路徑的更多信息,請參閱此內容。


查看完整回答
反對 回復 2022-06-01
  • 1 回答
  • 0 關注
  • 435 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號