首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在vue中使用grpc-web?

如何在vue中使用grpc-web?
EN

Stack Overflow用户
提问于 2020-03-03 21:08:22
回答 2查看 8.8K关注 0票数 8

我正在我的vue应用程序中尝试使用grpc-web客户端,如下所示:

代码语言:javascript
复制
import Vue from "vue";
import App from "./App.vue";
const { Registration, _ } = require("./identity-service_pb.js");
const {
  IdentityServicePromiseClient
} = require("./identity-service_grpc_web_pb.js");

const identityService = new IdentityServicePromiseClient(
  "http://localhost:9000"
);


const req = new Registration();
req.setGender("male");
req.setInterestList(["A", "B", "C"]);

console.log(req);
console.log(identityService);

identityService.signUp(req, {}).then(function(response) {
  console.log(response);
}).catch(function(error) {
  console.error(error);
});

Vue.config.productionTip = false;

new Vue({
  render: h => h(App)
}).$mount("#app");

当应用程序被编译时,编译器会抱怨:

代码语言:javascript
复制
error  in ./src/identity-service_pb.js

Module Error (from ./node_modules/eslint-loader/index.js):

/home/developer/js/identity-client/src/identity-service_pb.js
   27:1   error  'proto' is not defined      no-undef
   28:50  error  'proto' is not defined      no-undef
   30:15  error  'proto' is not defined      no-undef
   31:20  error  'COMPILED' is not defined   no-undef
   36:3   error  'proto' is not defined      no-undef
   48:1   error  'proto' is not defined      no-undef
   51:15  error  'proto' is not defined      no-undef
   52:20  error  'COMPILED' is not defined   no-undef
   57:3   error  'proto' is not defined      no-undef
   65:1   error  'proto' is not defined      no-undef
   82:1   error  'proto' is not defined      no-undef
   83:10  error  'proto' is not defined      no-undef
   96:1   error  'proto' is not defined      no-undef
  115:1   error  'proto' is not defined      no-undef
  117:17  error  'proto' is not defined      no-undef
  118:10  error  'proto' is not defined      no-undef
  129:1   error  'proto' is not defined      no-undef
  141:11  error  'value' is already defined  no-redeclare
  157:1   error  'proto' is not defined      no-undef
  159:3   error  'proto' is not defined      no-undef
  171:1   error  'proto' is not defined      no-undef
  194:1   error  'proto' is not defined      no-undef
  203:1   error  'proto' is not defined      no-undef
  212:1   error  'proto' is not defined      no-undef
  221:1   error  'proto' is not defined      no-undef
  231:1   error  'proto' is not defined      no-undef
  240:1   error  'proto' is not defined      no-undef
  261:1   error  'proto' is not defined      no-undef
  262:10  error  'proto' is not defined      no-undef
  275:1   error  'proto' is not defined      no-undef
  278:34  error  'proto' is not defined      no-undef
  294:1   error  'proto' is not defined      no-undef
  296:17  error  'proto' is not defined      no-undef
  297:10  error  'proto' is not defined      no-undef
  308:1   error  'proto' is not defined      no-undef
  320:11  error  'value' is already defined  no-redeclare
  320:23  error  'proto' is not defined      no-undef
  321:32  error  'proto' is not defined      no-undef
  337:1   error  'proto' is not defined      no-undef
  339:3   error  'proto' is not defined      no-undef
  351:1   error  'proto' is not defined      no-undef
  365:7   error  'proto' is not defined      no-undef
  375:1   error  'proto' is not defined      no-undef
  384:1   error  'proto' is not defined      no-undef
  393:1   error  'proto' is not defined      no-undef
  395:40  error  'proto' is not defined      no-undef
  403:1   error  'proto' is not defined      no-undef
  412:1   error  'proto' is not defined      no-undef
  421:1   error  'proto' is not defined      no-undef
  426:29  error  'proto' is not defined      no-undef

✖ 50 problems (50 errors, 0 warnings)

如您所见,编译器抱怨自动生成的文件identity-service_pb.js

文件结构如下:

我做错了什么?

更新

我需要在vue应用程序和golang应用程序之间建立一个特使代理吗?

还是vue应用可以直接与golang应用进行通信?目前,我没有他们之间的特使代理。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-03-04 07:19:07

您可能需要google-protobuf npm包吗?

票数 2
EN

Stack Overflow用户

发布于 2020-06-07 22:33:15

我在Go中使用了react和gRPC,也许我可以回答您的问题:

  • 是的,您确实需要一个特使- vue和您的grpc服务器之间的代理。特使将您的HTTP/1.1调用从浏览器转换为HTTP 2/调用,这些调用是gRPC handles
  • 来解决编译器抱怨自动生成的文件的问题,您可以在文件的开头使用/*eslint-disable*/,您将绕过
  • 来调用需要使用以下格式的gRPC方法:

代码语言:javascript
复制
service.method(req, metadata, callback)

所以在你的情况下,你可以做这样的事情:

代码语言:javascript
复制
identityService.signUp(req, {}, async (err, response) => { 
    const data = await response
    console.log(data)
    console.log(err)
})
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60515530

复制
相关文章

相似问题

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