【问题标题】:Type 'GrpcObject' has no construct signatures _ typescript grpc类型“GrpcObject”没有构造签名_typescript grpc
【发布时间】:2021-04-13 20:49:31
【问题描述】:

我是 ts 的新手。我正在与巢一起工作。我正在尝试使用我用 js 编写的 grpc-client 。但是当我尝试导出我的 grpc 服务对象时,我得到了这个错误:

import {loadPackageDefinition,credentials} from '@grpc/grpc-js';
import {loadSync} from '@grpc/proto-loader';

const packageDefinition = loadSync(`${__dirname}/protos/main.proto`, {
    keepCase: true,
    longs: String,
    enums: String,
    defaults: true,
    oneofs: true,
    arrays: true
});


let { AuthService } = loadPackageDefinition(packageDefinition) ;

 export const auth_client = new AuthService(`localhost:${process.env.auth_grpc_port?process.env.auth_grpc_port:30030}`,credentials.createInsecure());

错误:

src/lib/grpc.client.ts:16:34 - 错误 TS2351:这个表达式不是 可建造的。并非所有类型为 'GrpcObject | 服务客户端构造器 | ProtobufTypeDefinition' 是可构造的。 'GrpcObject' 类型没有构造签名。

【问题讨论】:

    标签: typescript grpc-js


    【解决方案1】:

    不幸的是,loadPackageDefinition 输出的对象的 TypeScript 类型过于通用,无法有效地使用。一种解决方案是使用随@grpc/proto-loader 版本 0.6.x 分发的 TypeScript 生成器为您的 proto 文件生成 TypeScript 类型。然后您可以使用类型断言使loadPackageDefinition 的输出具有反映您的原型文件的特定结构。

    【讨论】:

      猜你喜欢
      • 2020-09-16
      • 2021-11-30
      • 2018-07-13
      • 2016-10-07
      • 2018-08-04
      • 2021-05-14
      • 2020-10-17
      • 2016-03-05
      • 2021-09-21
      相关资源
      最近更新 更多