当前位置: 首页 > 知识库问答 >
问题:

GRPC客户端使用,节点js面临问题

刘承悦
2023-03-14

当我尝试使用node js创建grpc客户端调用时,我遇到了一个问题。当我在proto文件中使用“google/api/annotations.proto”时,我得到一个错误。如果我删除它,它会工作文件。我可以知道我从我的客户那里错过了什么吗。js公司

错误:无法解析的扩展:“扩展google”。protobuf。中的MethodOptions。谷歌。根目录下的api。resolveAll(src/github.com/workspace/explorer/node\u modules/protobufjs/src/root.js:255:15)位于对象。对象上的loadSync(/src/github.com/workspace/explorer/node\u modules/@grpc/proto-loader/build/src/index.js:224:16)。(/src/github.com/workspace/explorer/server/grpc/client.js:3:37)

syntax = 'proto3';

import "google/api/annotations.proto";
import "google/protobuf/timestamp.proto";

package chain;

service chain {
  
  rpc GetHeight(HeightRequest) returns(HeightResponse) { option (google.api.http).get = "/api/height/{height}";}
 
}

message HeightRequest {
  string hash = 1;
}

message HeightResponse {
  int64 height=1;
}


客户js公司

var PROTO_PATH = __dirname + '/proto/chain.proto';
var parseArgs = require('minimist');
var grpc = require('@grpc/grpc-js');
var protoLoader = require('@grpc/proto-loader');
var packageDefinition = protoLoader.loadSync(
    PROTO_PATH,
    {
        keepCase: true,
        longs: String,
        enums: String,
        defaults: true,
        oneofs: true,

    });
var chain_proto = grpc.loadPackageDefinition(packageDefinition).chain;

function main() {
    var argv = parseArgs(process.argv.slice(2), {
        string: 'target'
    });
    var target;
    if (argv.target) {
        target = argv.target;
    } else {
        target = 'localhost:9040';
    }
    var client = new chain_proto.chain(target,
        grpc.credentials.createInsecure());

    client.GetHeight(function (err, response) {
        console.log('height:', response);
    });
}

main();

共有1个答案

明安阳
2023-03-14

我找到了上述错误的解决方案,您需要在项目目录中创建一个文件夹-

接下来需要添加一个路径,如下所示。

 PROTO_PATH,
    {
        keepCase: true,
        longs: String,
        enums: String,
        defaults: true,
        oneofs: true,
        includeDirs: [
            __dirname + '/googleapis',
        ]

    });
 类似资料:
  • 当我用我的节点运行MongoDB连接时。js应用程序哪个游戏平台我在这里面临着越来越多的MongoDB连接的问题[不使用任何查询,但它不断增加],达到819,我的MongoDB复制服务器停止响应,间接应用程序停止工作。但是我想保持至少20个关于如何解决这些问题的联系,请帮助我。 ** Mongodb连接:const connectionString=mongodb://AAAA:PASSWORD@

  • 我在服务器上有一个自签名的grpc服务,并使用dart客户端在dart服务器上运行。但我不知道如何绕过或允许节点客户端的自签名证书。。我试过这个: 但当我调用时,我的验证checkServerIdentity没有调用。 有人有线索吗?

  • 简介 TensorFlow serving提供了通用的gRPC接口,我们也考虑实现通用的gRPC客户端,由于用户模型的输入数据不同,因此我们通过JSON定义数据,并且集成到Xiaomi Cloud-ML中。 使用Xiaomi Cloud-ML 安装cloudml命令工具后,我们可以创建模型服务,请求的数据保存到本地JSON文件中。 { "keys_dtype": "int32", "key

  • 我在node js Express中面临一个问题[因为我是node js的新手]。我的用例是我有三个目录[根目录、路由、html文件]。在根目录中,我有一个包含端口信息的index.js文件,在routes目录中,有一个用于提及API的所有路由的route文件。在html文件中,我有静态html文件+client.js文件。当我转到/api/getlist路由时,我正在发送一个html文件。在该h

  • 我有一个用python实现的gRPC服务器,我正在从NodeJS调用RPC,但它给出了一个错误“找不到方法”。当我使用python客户端调用时,请求成功。 导入grpc import stream\u csv\u pb2 import urllib。来自urllib的请求。从并发导入期货导入HTTPError时出错,URLError

  • 然后我使用: 这似乎无法为那些设置了该属性的客户机提供一个clusergroup。这对客户端节点不起作用吗?