【发布时间】:2018-08-07 15:59:36
【问题描述】:
我们正试图让 gRPC 与 React 一起工作(实际上我们试图让它与 React-Native 一起工作,但现在放弃了)。
如果您关注this example,那么使用普通的 node.js 会非常简单。
我们从使用 create-react-app 开始,但是当我们启动应用程序时,出现以下错误:
existsSync is not a function
这是由 pre-binding.js 中的这个位引起的,该位属于位于 grpc 中的 node-pre-gyp 包:
var existsSync = require('fs').existsSync || require('path').existsSync;
我的理解是,Webpack(或由 create-react-app 运行的其他进程)会发生某些事情,它会返回并清空对象而不是 require('fs')。
关于如何在不放弃 create-react-app 奇迹的情况下使其工作的任何想法?
要对其进行测试,您只需执行以下 2 个简单步骤:
- create-react-app 测试应用
- 在 App.js 文件中添加
import grpc from 'grpc';
【问题讨论】:
-
Grpc 是用来创建服务器的,你不应该改用:github.com/grpc/grpc-web 吗? (我只是在说我在文档中读到的内容)
-
我只是想澄清一下:这个 React 应用程序应该在浏览器中运行吗?
-
确实,虽然这在 node.js 作为客户端(grpc npm 包也可以作为客户端)上运行良好,但问题是在浏览器上运行这个客户端而不是通过 node.js 运行这个客户端。看来我们确实必须以一种或另一种方式使用 grpc-web,据我了解,这意味着服务器不能使用 tcp 连接,而是使用 http 连接(使用 TLS 才能使用 http2)。
标签: node.js reactjs webpack create-react-app grpc