如何更新kratos版本 实战-从 kratos-v2.0.0-rc1 升级到 kratos-v2.0.0
-
查看下当前版本
jw@jianwei seckill (main) $ kratos -v kratos version v2.0.0-rc1
-
查看go.mod文件 cat go.mod
go 1.16 require ( ... github.com/go-kratos/kratos/v2 v2.0.0-rc1 ... )
-
升级kratos构建工具
go get -u github.com/go-kratos/kratos/cmd/kratos/v2@latest
-
查看构建工具版本是否更新
jw@jianwei service (main) $ kratos -v kratos version v2.0.0
-
升级项目中的kratos版本
cd /go/src/project # 项目的路径 go get -u github.com/go-kratos/kratos/v2@latest
-
查看项目中的kratos版本是否更新成功 cat go.mod
go 1.16 require ( ... github.com/go-kratos/kratos/v2 v2.0.0 ... )
升级后测试构建项目出现错误
jw@jianwei service (main) $ make run
cd cmd/server/ && go run .
../../../../../../pkg/mod/github.com/aliyun/alibaba-cloud-sdk-go@v1.61.18/sdk/responses/json_parser.go:11:2: missing go.sum entry for module providing package github.com/json-iterator/go (imported by github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses); to add:
go get github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses@v1.61.18
../../../../../../pkg/mod/go.opentelemetry.io/otel/metric@v0.20.0/config.go:18:2: no required module provides package go.opentelemetry.io/otel/unit; to add it:
go get go.opentelemetry.io/otel/unit
../../../../../../pkg/mod/github.com/nacos-group/nacos-sdk-go@v1.0.8/common/logger/logger.go:28:2: missing go.sum entry for module providing package go.uber.org/zap (imported by github.com/nacos-group/nacos-sdk-go/common/logger); to add:
解决: 根据提示更新对应的库go get
出现错误but does not contain package
jw@jianwei service (main) $ go get go.opentelemetry.io/otel/unit
go get: module go.opentelemetry.io/otel@upgrade found (v1.0.0-RC1), but does not contain package go.opentelemetry.io/otel/unit
解决: 由于redis包的问题 版本更新 v8.10.0 -> v8.11.0
go get -u github.com/go-redis/redis/v8@v8.11.0
错误: undefined: binding.MapProto
cd cmd/server/ && go run .
# github.com/helloMJW/seckill/api/user/service/v1
../../../../../api/user/service/v1/user_http.pb.go:17:9: undefined: binding.MapProto
../../../../../api/user/service/v1/user_http.pb.go:34:46: undefined: "github.com/go-kratos/kratos/v2/transport/http".HandleOption
../../../../../api/user/service/v1/user_http.pb.go:35:7: undefined: "github.com/go-kratos/kratos/v2/transport/http".DefaultHandleOptions
../../../../../api/user/service/v1/user_http.pb.go:120:13: undefined: binding.BindVars
../../../../../api/user/service/v1/user_http.pb.go:190:10: undefined: binding.EncodePath
../../../../../api/user/service/v1/user_http.pb.go:193:19: cannot use nil as type string in argument to c.cc.Invoke
解决: 执行命令 make generate
执行命令 make http
错误: undefined: v1.NewOrderHandler
cd cmd/server/ && go run .
# github.com/helloMJW/seckill/app/order/service/internal/server
../../internal/server/http.go:32:24: undefined: v1.NewOrderHandler
make: *** [run] Error 2
解决: 对照最新 https://github.com/go-kratos/kratos-layout/blob/main/internal/server/http.go 修改项目中的http.go文件