在使用kratos proto命令時(shí)報(bào)google/protobuf/descriptor.proto: File not found.的錯(cuò)誤
通常是因?yàn)槟膒rotoc工具沒有正確安裝導(dǎo)致的。
請(qǐng)盡量采用包管理器方式進(jìn)行安裝,以確保安裝的完整性。
如果您一定要自行下載zip包安裝預(yù)編譯的版本或自行編譯安裝,請(qǐng)參考zip包中readme.txt文件的說明進(jìn)行操作,確保include下的所有東西(通常是google目錄,里面是一系列.proto后綴的文件)都已經(jīng)正確放置在您的include路徑下,如/usr/local/include/目錄中,以確保protoc在編譯過程中能成功找到。
IDE中import "google/api/annotations.proto";等proto文件有錯(cuò)誤提示(被畫波浪線)
IDE中的這個(gè)提示不會(huì)影響項(xiàng)目的正常編譯,如果您需要解決這個(gè)報(bào)錯(cuò),請(qǐng)將項(xiàng)目中的thrid_party目錄加入Protobuf的custom include paths下。
如何使用 goland 進(jìn)行開發(fā)
在 goland 中,可以添加構(gòu)建配置如下圖

新版本發(fā)布后重新生成代碼,發(fā)現(xiàn)無法運(yùn)行,生成出來的代碼有報(bào)錯(cuò)
可以嘗試以下步驟
- kratos upgrade
- 修改 go.mod 中的 kratos 依賴版本
- go generate ./...
使用 kratos client . 后發(fā)現(xiàn) http 沒有被生成
- 可以使用 make http
- 可以 kratos proto client xxx -- --go-http_opt=omitempty=false
安裝 kratos 工具后使用時(shí)終端提示 command not found: kratos
環(huán)境變量沒有配置,可以把 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ī)則
- git clone github.com/envoyproxy/protoc-gen-validate
- cd protoc-gen-validate
- make build
如何控制 http 的返回值
可以覆蓋默認(rèn)的 DefaultResponseEncoder, 通過 http.ResponseEncoder() 配置,注入到 http.Server() 中
更多建議: