如何在nodejs中返回grpc错误

tha*_*hpk 5 node.js grpc

我想在服务器端返回 grpc 错误代码和描述。我试过这个

function sayHello(call, callback) {
  callback({error: {code: 400, message: "invalid input"});
}
Run Code Online (Sandbox Code Playgroud)

但我从客户那里得到了这个例外

{ Error: Unknown Error
    at /home/thanh/email/node_modules/grpc/src/node/src/client.js:434:17 code: 2, metadata: Metadata { _internal_repr: {} } }
Run Code Online (Sandbox Code Playgroud)

如果我想要在类似这样的消息定义错误领域。

message Hello {
  string name = 1;
  string error = 2; // don't want this
}
Run Code Online (Sandbox Code Playgroud)

那么将 grpc 错误发送回客户端的正确方法是什么?

avi*_*avi 6

将其更改为:

return callback({
  code: 400,
  message: "invalid input",
  status: grpc.status.INTERNAL
})
Run Code Online (Sandbox Code Playgroud)

  • 我要注意的是 `code` 字段在这里不会做任何事情。如果要传播到客户端,则需要将其添加到错误 `metadata` 中。如果您想要 HTTP 错误代码 400 的语义,我建议使用相应的 gRPC 状态:`grpc.status.INVALID_ARGUMENT`。 (6认同)