go module_error ai_generated true

rpc 错误:code = Unimplemented desc = 未知服务 pb.OrderService

rpc error: code = Unimplemented desc = unknown service pb.OrderService

ID: go/grpc-unimplemented-unknown-method

其他格式: JSON · Markdown 中文 · English
80%修复率
87%置信度
0证据数
2024-06-03首次发现

版本兼容性

版本状态引入弃用备注
1.x active — — —

根因分析

客户端调用的完全限定服务名未在服务器上注册。通常由客户端与服务器之间 proto 包名/名称不匹配、生成的桩代码过期,或以不同的包路径注册服务导致。

English

The client is calling a fully-qualified service name that the server does not have registered. Usually caused by mismatched proto package/name between client and server, a stale generated stub, or registering the service under a different package path.

generic

解决方案

  1. 88% 成功率
    Confirm the registered service name on the server matches the client stub by inspecting the descriptor:
    
    sd := pb.File_order_proto.Services().ByName("OrderService")
    log.Println("service full name:", sd.FullName())
    // ensure pb.RegisterOrderServiceServer(srv, impl) is called
  2. 90% 成功率
    Regenerate stubs from the canonical .proto and share the exact module version between client and server:
    
    // go.mod on both sides must reference the same generated module version
    // buf generate / protoc --go_out=. --go-grpc_out=. order.proto

无效尝试

常见但无效的做法:

  1. 97% 失败

    The server will never suddenly gain the method; retrying an unimplemented RPC always returns Unimplemented again.

  2. 85% 失败

    The service name mismatch is independent of the network endpoint; a different port with the same stale stub fails identically.