grpc 版本

在 go 语言场景下使用 grpc,编译 ok,运行的时候报错。
grpc 版本:1.40.0
go version: go1.16.10 linux/amd64

运行报错提示

"rpc error: code = Unimplemented desc ="

运行错误截图如下:

结论先行

引起上述错误的主要原因是自定义的 proto 文件中 package 的名字和代码中的 import 中的 package 名称不一致才导致的问题。
因此检查自定义的 proto 文件以及代码中引用(import)的文件名称,将二者改为一致即可。

后续的内容只是简单记录下发现错误过程而已。感兴趣的可以继续阅读。

错误调查

查看 proto 文件

package mypai;
option go_package = "./;mypai";service mygrpc{rpc MyTestGrpcFunction(EmptyReq) returns (MyActiveTable) {}
}message EmptyReq{} message MyActiveTable
{repeated string idList = 1;
}

grpcClient 部分代码

报错的位置是第 27 行处,其他部分代码截图如下:

  3 import (4     "fmt"5     myapi  "mycodes/egrpcProtoc/test"6     "time"7     "errors"8 )...........25 func TestMyTestGrpcFunction(req *myapi.EmptyReq) (resp *myapi.MyActiveTable) {26     if resp, err = grpcClient.MyTestGrpcFunction(req); err != nil {27         log.Logger.Error(err)28     }29     } else {30         log.Logger.Error(err)31     }32     return resp33 }

使用 grpc 工具生成的 *.pb.go 部分代码

 3 package mypai...........72 type GrpcClient interface {73     MyTestGrpcFunction(in *EmptyRequest, opts ...grpc.CallOption) (*MyActiveTable, error)74 }...........78 func (c *grpcClient ) MyTestGrpcFunction(in *EmptyRequest, opts ...grpc.CallOption) (*MyActiveTable, error) {79     out := new(MyActiveTable)80     err := c.cc.Invoke(ctx, "/mypai_communication.myapi/MyTestGrpcFunction", in, out, opts...)81     if err != nil {82         return nil, err83     }84     return out, nil85 }...........112 type GrpcClient interface {113     MyTestGrpcFunction(*EmptyRequest) (*MyActiveTable, error)
114 }...........123 func (*UnimplementedMypaiServer) MyTestGrpcFunction(*EmptyRequest) (*MyActiveTable, error) {124     return nil, status.Errorf(codes.Unimplemented, "method MyTestGrpcFunctionnot implemented")
125 }

发现问题

截至此处,基本可以上可以确定代码问题所在,因为明显在自定义的 proto 中是定义有 MyTestGrpcFunction 接口方法的,但是运行却报错 Unimplemented ,再次 check 代码发现是 package 名称,在自定义的 proto 中是 mypai ,但是在代码使用中却用的是 myapi ,可以很明显的看出是不一样的。

参考

Error handling

rpc error: code = Unimplemented desc =相关推荐

  1. docker删除es数据_docker问题:quot;rpc error: code = 2 desc = containerd: container ...quot;

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:原创文章分类汇总及配套源码,涉及Java.Docker.K8S.Devops等 问题突现 在执 ...

  2. docker问题备忘:“rpc error: code = 2 desc = containerd: container not found“

    问题 docker问题备忘:"rpc error: code = 2 desc = containerd: container not found" 特此记录下 解决方案 内存不足 ...

  3. docker问题备忘:rpc error: code = 2 desc = containerd: container not found

    在执行docker exec命令时,报错信息为:rpc error: code = 2 desc = containerd: container not found 先抛出结果 如果您是通过搜索错误信 ...

  4. ERRO[0000] unable to determine runtime API version: rpc error: code = Unavailable desc = connection

    遇到错误: ERRO[0000] unable to determine runtime API version: rpc error: code = Unavailable desc = conne ...

  5. ERRO[0000] unable to determine image API version: rpc error: code = Unavailable.......错误解决

    ERRO[0000] unable to determine image API version: rpc error: code = Unavailable desc = connection er ...

  6. 电脑无限重启rpc服务器不可用,StarUML启动时候出现System Error. Code:1722. RPC服务器不可用.错误的解决办法...

    评论 # re: StarUML启动时候出现"System Error. Code:1722. RPC服务器不可用."错误的解决办法 2010-01-30 11:47 s love ...

  7. 海马玩模拟器启动失败,start machine failed! error code = 3和error code=21

    ssdwin7安装visual studio 2019,另外打开网页,终于在最后时刻死机-- 然后ghost重装,几次插拔然后ssd不见了-- 重新买ssd,然后重装. --这些都是前戏-- 今天打开 ...

  8. 解决 win10 pycurl安装出错 Command python setup.py egg_info failed with error code 10 编译安装包 安装万金油...

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/yexiaohhjk/article/d ...

  9. Job for docker.service failed because the control process exited with error code. See systemctl sta

    docker启动的时候出现这个错误: Job for docker.service failed because the control process exitedwith error code. ...

  10. 【错误归纳】E: Sub-process /usr/bin/dpkg returned an error code (1)子进程 已安装 post-installation 脚本 返回了错误号 1

    问题描述 我在使用apt-get install 安装某个程序的时候出现了下面的错误提示: 正在设置 anydesk (5.1.1) ...System start/stop links for /e ...

最新文章

  1. Python3中的成员保护和访问限制
  2. [java]OutOfMemoryError 原因及解决办法
  3. 第2章 基本的TCP套接字
  4. 震惊!Canvas原来还能这么搞!代码画一个时钟出来
  5. 从源码角度看Android系统SystemServer进程启动过程
  6. Nacos配置管理模型
  7. Nim 游戏 、⽯头游戏1、石头游戏2
  8. 仓库移动_移动式仓库、检修作业平台、储油柜胶囊破裂检测装置……这场科技秀超燃!...
  9. Linux 系统管理员工具集
  10. python issuperset_Superset的各种疑难解答
  11. spring boot之security
  12. C#路径中获取文件全路径、目录、扩展名、文件名称
  13. Ubuntu22.04 Python 深度学习环境配置记录
  14. 大物实验-直接测量量不确定度计算器 开发备忘录
  15. 基于matlab的声波分析研究,基于MATLAB的声音信号分析与处理(共13页)
  16. vissim交通仿真实验(1)--仿真基础
  17. 分手后怎样才能让前任重回你身边
  18. 大数据———Flume与Kafka整合
  19. 面向对象——依赖倒转原则和里氏代换原则
  20. python青蛙跳台阶_Python之青蛙跳台阶

热门文章

  1. 在我笔记本Ubuntu上装普罗米修斯记录
  2. Pytorch中函数参数dim的理解
  3. win7快捷方式去箭头_【初级会计】作为会计的你必须知道的快捷方式
  4. 程序员写个爬虫程序,整个公司被端了?
  5. 创业者防坑手册:面对强大的资本力量,你该如何正当防卫?
  6. directadmin(DirectAdmin Extended)
  7. 四叶草剧场服务器维修价格,四叶草剧场服务器介绍 服务器选择攻略
  8. 微信小程序实现多图片下载
  9. PHP读取HTML生成doc
  10. caesar java_Java之Caesar与Vigenere实现