【问题标题】:NodeJS gRPC: "Method handler expected but not provided"NodeJS gRPC:“预期但未提供方法处理程序”
【发布时间】:2017-07-31 02:39:21
【问题描述】:

我浏览了文档,但还没有找到解决方案。该应用大致基于他们文档中的"sayHello"-example,但每次代码运行时都会返回警告Method handler for /eventComm.DatabaseRPC/InsertSingleDocument expected but not provided

我的原型文件:

service DatabaseRPC {
  rpc InsertSingleDocument (Doc) returns (Doc) {} 
}

message Doc {
  required string name = 1;
  required int32 id = 2;
}

我的 gRPC 服务器:

  function InsertSingleDocument (call, callback) {
    callback(null, {
      name: 'Hello ',
      id: 1
    })
  }
  let server = new grpc.Server()
  server.addProtoService(protoDef.DatabaseRPC.service, {
    InsertSingleDocument: InsertSingleDocument
  })
  server.bind('0.0.0.0:50051', grpc.ServerCredentials.createInsecure())
  server.start()

这段代码有什么问题?当然我已经试过google the error但是没有找到解决办法

【问题讨论】:

    标签: javascript node.js rpc grpc


    【解决方案1】:

    为了符合 JavaScript 命名约定,方法的首字母应小写:

    server.addProtoService(protoDef.DatabaseRPC.service, {
      insertSingleDocument: InsertSingleDocument
    })
    

    您可以在链接的 Hello World 示例中看到这一点。该方法在 proto 文件中声明为 SayHello,但作为 sayHello 传递给服务器。

    注意:我同意这是令人困惑的,I will try to improve the situation

    【讨论】:

    • 谢谢。我完全错过了示例中的小写字母。其他语言也有问题吗?也许这将有助于强制执行一个命名方案,其中所有函数都在 proto 文件中以小写字母开头。
    • 在多种语言中,方法名称会遵循该语言的命名方案,但这些命名方案可能会有所不同。您在 proto 文件中的声明确实符合 proto 文件的命名约定。
    • 好的,感谢您的澄清。可以将其添加到文档中吗?用大红色字母。到目前为止,我喜欢 gRPC,但是当我阅读 quick start guide 时,我完全错过了这一点。
    猜你喜欢
    • 2023-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-15
    • 1970-01-01
    • 1970-01-01
    • 2019-09-11
    相关资源
    最近更新 更多