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

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

protoc:Go 包的包名不一致

protoc:Go 包的包名不一致

Go
30秒到達戰場 2022-07-11 14:46:20
我正在使用 protoc 創建一些 DTO。定義采用以下結構:/protobuf|-- common.proto|-- /api    |-- /service        |-- csvdownload.proto我的csvdownload.proto樣子是這樣的:syntax = "proto3";package protobuf.api.service;import "common.proto";option go_package = ".;service"; // golangmessage CsvExportRequest {    Common.Currency exportCurrency = 2;    Common.Decimal rounding = 3;}和common.proto看起來像這樣的存根:syntax = "proto3";package protobuf;option go_package = ".;gopb"; // golang我試圖通過從目錄csvdownload.proto中運行以下命令來編譯:/protobufprotoc --go_out=gopb --go_opt=paths=source_relative .\api\service\csvdownload.proto但是,我收到以下錯誤:protoc-gen-go:轉到包“。” 名稱不一致 gopb (common.proto) 和服務 (api/service/csvdownload.proto)我認為這意味著無法生成代碼,因為common.proto并且csvdownload.proto已經聲明了不同的包,但我不確定這是否會有所作為,并且根據我對 Protobuf 工作原理的理解,它不應該妨礙我的編譯能力csvdownload.proto。我在這里做錯了什么?處理此問題的任何幫助將不勝感激。
查看完整描述

1 回答

?
慕森王

TA貢獻1777條經驗 獲得超3個贊

您必須將目錄結構更改為以下內容:


/protobuf

|-- /common

    |-- common.proto

|-- /api

    |-- /service

        |-- csvdownload.proto

另外,我建議您添加一個真實的包裹地址common.proto


syntax = "proto3";

package protobuf;


option go_package = "myProject.com/proto/common"; // golang

然后你可以像這樣將這個通用導入到你的其他原型中。


import "common/common.proto";

生成代碼是(這是您想要的完整請求(我認為))


protoc --proto_path=../base_directory/protobuf/api/service/ --proto_path=../base_directory/protobuf/ --go_out=plugins=grpc:./the/generated/path/you/want/directory ../base_directory/protobuf/api/service/csvdownload.proto


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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