Node.js Eggjs使用RPC模块 egg-sofa-rpc 踩坑记录

按照这个链接进行安装 https://github.com/eggjs/egg-sofa-rpc/wiki/Eggjs-和-SOFA-的跨语言互调

在配置好基本环境之后,运行npm run rpc,生成调用的 proxy 文件时提示以下错误:
Node.js Eggjs使用RPC模块 egg-sofa-rpc 踩坑记录_第1张图片

这个是阿里文档没有提到了一个坑:

必须在package.json文件最外层添加,这个egg-int工具并不会帮建这个。

"egg": {
   "framework": "sofa-node"
}

这么做再执行会依旧会报错,缺少这个包,需要执行 npm i sofa-node之后才可以正常运行
Node.js Eggjs使用RPC模块 egg-sofa-rpc 踩坑记录_第2张图片
生成之后,执行npm run dev 报错了
Node.js Eggjs使用RPC模块 egg-sofa-rpc 踩坑记录_第3张图片
猜测是因为没有启动zookeeper服务

zookeeper,它是一个分布式服务框架,是Apache Hadoop 的一个子项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等。上面的解释有点抽象,简单来说zookeeper=文件系统+监听通知机制。

通过npm安装zookeeper,遇到这个问题
Node.js Eggjs使用RPC模块 egg-sofa-rpc 踩坑记录_第4张图片
因为没有安装配置好 node-gyp 环境,执行 npm i -g windows-build-tools 安装,需要在管理员模式运行。

好不容易装上之后,继续执行安装zookeeper
Node.js Eggjs使用RPC模块 egg-sofa-rpc 踩坑记录_第5张图片
又出现另外的问题…花费时间排查之后,决定放弃=_=,换一种方式,去官网下载安装 http://zookeeper.apache.org/
Node.js Eggjs使用RPC模块 egg-sofa-rpc 踩坑记录_第6张图片
正常情况下载不带bin的,下载完解压,运行命令 zkServer.cmd start 进行启动
Node.js Eggjs使用RPC模块 egg-sofa-rpc 踩坑记录_第7张图片
但是报错找不到或无法加载主类,经过一番排查,发现这是因为下载下来的是源码,而不是已经编译好的jar包,需要进行编译才可以。原因是从目前的版本3.5.5开始,带有bin名称的包才是我们想要的可以直接使用的,里面有编译后的二进制的包,而另一个tar.gz的包里面是源码包,无法直接使用。官方包改名的坑…

换编译好的包,继续执行,又报错
Node.js Eggjs使用RPC模块 egg-sofa-rpc 踩坑记录_第8张图片
继续查问题,查到原因是windows的问题,start是在linux下用.sh脚本时的命令,在win下直接打脚本名就好。将zkServer.cmd start启动命令改为zkServer.cmd命令,则启动Zookeeper时就OK了
Node.js Eggjs使用RPC模块 egg-sofa-rpc 踩坑记录_第9张图片
弄完了zookeeper,回去启动服务,发现依旧报那个错误=_=,继续查问题,在查找有段时间之后,发现是因为文档错误!

这是文档的写法Node.js Eggjs使用RPC模块 egg-sofa-rpc 踩坑记录_第10张图片
这是包的readmeNode.js Eggjs使用RPC模块 egg-sofa-rpc 踩坑记录_第11张图片
应该写的是rpc而不是sofaRpc!!应该是包后期更改,而文档并没有修改

修改完就能正常启动服务

你可能感兴趣的:(node)