【问题标题】:TypeError: Cannot read properties of undefined (reading 'MethodInfo') in react js app using grpc-webTypeError:无法使用 grpc-web 在反应 js 应用程序中读取未定义的属性(读取“MethodInfo”)
【发布时间】:2021-10-14 12:53:07
【问题描述】:

我正在使用 grpc-web 通过 gRPC 与 java 后端进行通信。我在前端使用 ReactJS,它使用 grpc-web 来解释 protobuffers。

我收到了这个奇怪的错误。我的原型是正确的(我使用名为“bloom”的反射工具进行了检查,所以后端很好)这似乎是我在 ReactJS 中使用的 grpc 库的内部错误。

我收到以下错误:

TypeError: Cannot read properties of undefined (reading 'MethodInfo')

以上错误指向我的proto文件:dashboard_services_grpc_web_pb.js

在这个文件中,它指向这一行

const methodInfo_DashboardService_userLogin = new grpc.web.AbstractClientBase.MethodInfo( ...... );

我很难解决这个问题,因为根据我的理解,grpc.web.AbstractClientBasegrpc-web 的原生内容。

我还重新安装了我的 node_modules,希望这是版本问题,但无济于事。

【问题讨论】:

  • 我还通过运行npm cache clean --force在内部和全局范围内清除了我的 npm 缓存
  • 我还将项目克隆到一个新目录中,希望它一定是一些缓存问题
  • 你的标题提到了 grpc-js。 grpc-js这里是怎么涉及到的?
  • 它已安装在项目中,所以我认为值得一提@murgatroid99
  • 好的,您是否以某种与此问题相关的方式使用它,如果是,如何使用?

标签: javascript reactjs grpc grpc-web


【解决方案1】:

我遇到了同样的问题,因为相对于当前版本的grpc-web,我使用的是旧版本的可执行文件protoc-gen-grpc-web。使用 1.3.0 版本为我解决了这个问题。 您可以下载protoc-gen-grpc-webhere的最新版本。

【讨论】:

  • 谢谢...但不知何故,我无法为 1.3.0 版安装 proto-gen-grpc-web。我使用了命令npm i proto-gen-grpc-web@1.3.0,但我得到的只是No matching version found for protoc-gen-grpc-web@1.3.0.
  • 我刚刚查看了 npm 的网站,他们还没有发布 1.3.0 版本。你知道如何将 exe 文件添加到我的 package.json 中吗?
  • 您需要为您的平台下载可执行文件并将其添加到您的 PATH 变量中,然后 $ protoc -I=$DIR echo.proto \ --js_out=import_style=commonjs:$OUT_DIR \ -- grpc-web_out=import_style=commonjs,mode=grpcwebtext:$OUT_DIR 将生成正确的代码。
  • 谢谢!这行得通。
【解决方案2】:

在我的情况下,它发生在缓存清除之后,因为我们有:

"grpc-web": "^1.2.1",

而且是安装版1.3.0我改成:

"grpc-web": "1.2.1",

yarn 再次解决这个问题!

【讨论】:

    猜你喜欢
    • 2020-06-03
    • 2022-09-27
    • 2020-08-09
    • 2021-02-01
    • 2020-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-02
    相关资源
    最近更新 更多