Kratos 常見(jiàn)問(wèn)題

2022-04-22 13:59 更新

在使用kratos proto命令時(shí)報(bào)google/protobuf/descriptor.proto: File not found.的錯(cuò)誤

通常是因?yàn)槟膒rotoc工具沒(méi)有正確安裝導(dǎo)致的。

請(qǐng)盡量采用包管理器方式進(jìn)行安裝,以確保安裝的完整性。

如果您一定要自行下載zip包安裝預(yù)編譯的版本或自行編譯安裝,請(qǐng)參考zip包中readme.txt文件的說(shuō)明進(jìn)行操作,確保include下的所有東西(通常是google目錄,里面是一系列.proto后綴的文件)都已經(jīng)正確放置在您的include路徑下,如/usr/local/include/目錄中,以確保protoc在編譯過(guò)程中能成功找到。

IDE中import "google/api/annotations.proto";等proto文件有錯(cuò)誤提示(被畫(huà)波浪線)

IDE中的這個(gè)提示不會(huì)影響項(xiàng)目的正常編譯,如果您需要解決這個(gè)報(bào)錯(cuò),請(qǐng)將項(xiàng)目中的thrid_party目錄加入Protobuf的custom include paths下。

如何使用 goland 進(jìn)行開(kāi)發(fā)

在 goland 中,可以添加構(gòu)建配置如下圖


新版本發(fā)布后重新生成代碼,發(fā)現(xiàn)無(wú)法運(yùn)行,生成出來(lái)的代碼有報(bào)錯(cuò)

可以嘗試以下步驟

  1. kratos upgrade
  2. 修改 go.mod 中的 kratos 依賴版本
  3. go generate ./...

使用 kratos client . 后發(fā)現(xiàn) http 沒(méi)有被生成

  • 可以使用 make http
  • 可以 kratos proto client xxx -- --go-http_opt=omitempty=false

安裝 kratos 工具后使用時(shí)終端提示 command not found: kratos

環(huán)境變量沒(méi)有配置,可以把 GOBIN 目錄配置到環(huán)境變量中即可,或者在 GOBIN 目錄下使用 kratos 工具

proto 中引入了一些其他 proto 文件,生成代碼時(shí)提示 not found

可以把缺失的文件放到項(xiàng)目的 third_party 中,或者定制 Makefile 將 proto 文件所在位置 添加到構(gòu)建命令中

使用 validate 生成參數(shù)校驗(yàn)代碼時(shí),工具生成的代碼全部都是 // no validation rules for xxxx 但是已經(jīng)配置了 校驗(yàn)規(guī)則

  1. git clone github.com/envoyproxy/protoc-gen-validate
  2. cd protoc-gen-validate
  3. make build

如何控制 http 的返回值

可以覆蓋默認(rèn)的 DefaultResponseEncoder, 通過(guò) http.ResponseEncoder() 配置,注入到 http.Server() 中


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)