我对web前端开发非常陌生,在加载kafka客户机库时,我对js/node/angular世界有点迷茫。我考虑了两个访问kafka集群的选项:节点rdkafka和kafka节点。但是,我不认为我的问题出在他们身上,这似乎是对js和/或node之类的知识的缺乏。我将解释实际问题,并在最后回到这个概念。
这是我第一次进入js/node/angular世界,所以我对它的了解仍然非常有限,请容忍任何noob错误。我开始使用angularcli(1.2.3)来构建我的组件、服务等。在我尝试加载节点rdkafka之前,一切都很好:自述文件指示我使用“require”而不是“import”,但没有找到。
通过一些研究,我把typings.d.ts文件改成这样,从而使“require”工作(我想):
declare var module: NodeModule;
interface NodeModule {
id: string;
}
declare var require: NodeRequire;
和tsconfig.app.json来包含:
"types": [
"node"
]
内部编译器选项。
应用程序编译后,“const kafka=require('node-rdkafka')”开始加载库。但是,它的一个依赖项节点绑定中有一个bug。我发现已经有一个修复程序,所以我将其版本更改为最新的提交,只是为了遇到一个新错误,该错误已报告,但从未回答:
https://github.com/tootallnate/node-bindings/issues/34
我还收到以下警告:
WARNING in ./~/bindings/bindings.js
81:22-40 Critical dependency: the request of a dependency is an expression
WARNING in ./~/bindings/bindings.js
81:43-53 Critical dependency: the request of a dependency is an expression
我尝试查看节点绑定代码,发现它需要'fs'和'path',在我的例子中,这些需要返回“undefined”。既然现在有人使用node rdkafka没有问题,我想问题可能出在我的环境上,但是我在这上面浪费了好几个小时却没有成功。
然后我试着用kafka节点代替,也遇到了问题。首先,npm没有安装依赖于“should”的“buffermaker”依赖,我不知道为什么。我使用--save dev手动安装了所需的npm版本,然后编译了我自己的代码,但出现了以下警告:
WARNING in ./~/optional/optional.js
6:11-26 Critical dependency: the request of a dependency is an expression
WARNING in ./~/node-zookeeper-client/lib/jute/index.js
771:20-47 Critical dependency: the request of a dependency is an expression
现在我在运行时遇到了一个互联网上其他人都没有的错误:
Uncaught Error: Cannot find module "."
at webpackMissingModule (index.js:771)
at Object.<anonymous> (index.js:771)
at Object.../../../../node-zookeeper-client/lib/jute/index.js (index.js:781)
at __webpack_require__ (bootstrap 8ee5092…:54)
at Object.<anonymous> (index.js:24)
at Object.../../../../node-zookeeper-client/index.js (index.js:917)
at __webpack_require__ (bootstrap 8ee5092…:54)
at Object.<anonymous> (zookeeper.js:3)
at Object.../../../../kafka-node/lib/zookeeper.js (zookeeper.js:474)
at __webpack_require__ (bootstrap 8ee5092…:54)
在我看来,似乎不可能每个人都有这些问题,因为只有少数人抱怨Kafka节点问题,我找不到其他人与Kafka节点问题。
所以,除了需要一个用js访问kafka集群的解决方案之外,我真正的问题是:angular4或angularcli与使用require的代码之间是否存在不兼容?我是否将遗留代码与当前代码或类似的东西混合在一起?
任何指向解决方案的指针都是非常受欢迎的。提前谢谢。
1条答案
按热度按时间bwleehnv1#
以下是我从devs收集到的信息:这些库是基于官方c实现的 Package 器。因此,在web客户机中使用它们是不可能的。不过,也可以在服务器中使用它们,因为您可以为特定的平台构建它。如果你能控制客户的平台也没问题。
我计划做的是使用confluent的kafka rest代理,它在rest接口中公开kafka通道。以下是平台中的具体项目:
https://github.com/confluentinc/kafka-rest
还有一个节点客户端:
https://github.com/confluentinc/kafka-rest-node
不过,我还没试过。它似乎只与linux兼容。