首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在VueJS/类型记录中找不到gRPC-Web中的导入

在VueJS/类型记录中找不到gRPC-Web中的导入
EN

Stack Overflow用户
提问于 2022-05-29 15:55:40
回答 1查看 337关注 0票数 1

我创建了一个简单的VueJS应用程序,并试图实现一个文件上传的示例。

我使用以下proto文件:

代码语言:javascript
运行
复制
syntax = "proto3";

message File {
  bytes content = 1;
}

message MetaData {
  string name = 1;
  string type = 2;
}

message FileUploadRequest {
  oneof request {
    MetaData metadata = 1;
    File file = 2;
  }
}

enum Status {
  PENDING = 0;
  IN_PROGRESS = 1;
  SUCCESS = 2;
  FAILED = 3;
}

message FileUploadResponse {
  string name = 1;
  Status status = 2;
}

service FileUploadService {
  rpc upload(stream FileUploadRequest) returns(FileUploadResponse);
}

首先,我生成客户机存根:

代码语言:javascript
运行
复制
protoc -I=${DIR:-./api/} fileUpload.proto \
   --js_out=import_style=commonjs,binary:${OUT_DIR:-./api} \
   --grpc-web_out=import_style=typescript,mode=grpcwebtext:${OUT_DIR:-./api}

它在api目录中生成三个文件:

代码语言:javascript
运行
复制
├── api
│   ├── FileUploadServiceClientPb.ts
│   ├── fileUpload_pb.d.ts
|   ├── fileUpload.proto
│   └── fileUpload_pb.js
└── src
    ├── App.vue
    └── main
        ├── services
        │   └── fileService.ts
        └── views

我现在试图在FileService中实现生成的客户端代码:

代码语言:javascript
运行
复制
import { FileUploadServiceClient } from '../../../api/FileUploadServiceClientPb';
import { FileUploadRequest, FileUploadResponse, MetaData } from '../../../api/fileUpload_pb';

export default class FileService {

    constructor(readonly fileUploadClient: FileUploadServiceClient) { }

    uploadFile(file: File): Promise<FileUploadResponse | null> {
        ...
        this.fileUploadClient.upload(request, {}, (err, response) => {
        ...
        }
        ...
    }
}

出现以下两个问题

消息和类型的Uncaught SyntaxError: import not found: MetaData.

  • import

  • 导入似乎不起作用, of FileUploadServiceClient可以工作,但它不识别上传方法。

我正在使用libprotoc 3.20.1和protoc grpc-web 1.3.1

我已经搜索了一点,但没有找到一个可以帮助我的解决方案:

不幸的是,不同的import_style配置和grpc_out模式也没有解决这个问题。顺便说一句,在夸克应用程序中生成服务器端代码的工作原理是完全正确的。

EN

回答 1

Stack Overflow用户

发布于 2022-05-31 13:20:53

我也没有成功地使用web插件。protobuf插件使用起来要好得多,并且实际工作得很好:https://github.com/timostamm/protobuf-ts/blob/master/MANUAL.md (这是他们手册的链接)。

我使用的包是:

  • @protobuf-ts/runtime
  • @protobuf-ts/plugin (我确信这可以是一个dev dependency)
  • @protobuf-ts/grpcweb-transport (用于创建用于创建客户端的传输对象)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72425164

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档