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

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

如何使用 grpc 方法處理程序解決此問題

如何使用 grpc 方法處理程序解決此問題

Go
哈士奇WWW 2021-11-22 10:40:50
我是 golang 的新手,想嘗試使用 grpc 代碼來更好地理解它。為此,我遵循了此處顯示的示例:https://devicharan.wordpress.com/源代碼在這里:https : //github.com/devicharan/basicwebapp不幸的是,當我運行此代碼并執行 go build 時,我收到一條錯誤消息,其中包含以下內容:# basicwebapp/protoproto/CatalogService.pb.go:126: cannot use _CatalogService_GetProductCatalog_Handler (type func(interface {},   context.Context, []byte) (proto.Message, error)) as type grpc.methodHandler in field valueproto/RecommendationService.pb.go:99: cannot use _RecommendationService_GetRecommendations_Handler (type func(interface {}, context.Context, []byte) (proto.Message, error)) as type grpc.methodHandler in field value我不知道這意味著什么,或者我需要改變什么才能開始尋找修復。是代碼本身有問題還是我的 Go 配置有問題?另外,有人可以推薦一個很好的 Go 調試器嗎?
查看完整描述

3 回答

?
翻翻過去那場雪

TA貢獻2065條經驗 獲得超14個贊

基本上你的 protoc-gen-go 與 grpc 的版本不匹配。因此,將它們同步到最新版本并重新安裝 protoc-gen-go 將解決問題:


go get -u github.com/golang/protobuf/

cd github.com/golang/protobuf/

make


go get -u github.com/grpc/grpc-go


查看完整回答
反對 回復 2021-11-22
?
慕斯709654

TA貢獻1840條經驗 獲得超5個贊

對于遇到同樣問題的任何人,我所做的只是改變了我構建 proto 文件的方式。博客頁面上有一條評論突出顯示了一些缺失的步驟,我按照它并執行以下 protoc 命令從 proto 文件生成代碼:

protoc --go_out=plugins=grpc:. *.proto

我在包含 proto 文件的目錄中運行了此命令,然后在我的 main.go 文件上進行了構建,現在一切正常。


查看完整回答
反對 回復 2021-11-22
?
月關寶盒

TA貢獻1772條經驗 獲得超5個贊

我遇到了同樣的問題,重新安裝或新命令似乎不起作用。

然而:如果你改變

codec grpc.Codec, buf []byte

在 Handler 定義中變成:

dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor

codec.Unmarshal(buf, in)

進入

dec(in)

(全部在 .pb.go 文件中的處理程序定義中)

它似乎工作。

更改此文件當然不是最佳選擇,每次重新編譯時它都會覆蓋您的更改,但至少有一個解決方法,直到我弄清楚我搞砸了什么。


查看完整回答
反對 回復 2021-11-22
  • 3 回答
  • 0 關注
  • 223 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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