我对Web前端开发非常陌生,在加载kafka客户端库时,我对JS / Node / Angular世界感到迷茫。我考虑了两个访问我的kafka集群的选项:node-rdkafka和kafka-node。但是,我不认为我的问题在于他们,似乎缺乏关于JS和/或Node等的知识。我将解释实际问题,并在最后回到这个概念。
这是我第一次涉足JS / Node / Angular世界,所以我对它的了解仍然非常有限,请承担任何noob错误。我开始使用angular cli(1.2.3)来构建我的组件,服务等。一切都很好,直到我尝试加载node-rdkafka:自述文件指示我使用"要求"而不是" import",而且找不到。
通过一些研究,我设法得到了'通过改变typings.d.ts文件来工作(我认为):
declare var module: NodeModule;
interface NodeModule {
id: string;
}
declare var require: NodeRequire;
和tsconfig.app.json包含这个:
"types": [
"node"
]
在compilerOptions内部。
应用程序编译和" const kafka = require(' node-rdkafka')"开始加载库。但是,其中一个依赖项(节点绑定)中存在一个错误。我发现已经有了修复,所以我将其版本更改为最新的提交,只是为了遇到一个已经报告但从未回答的新错误:
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
我尝试查看节点绑定代码,发现它需要&#f;'和'路径',并且这些要求正在返回" undefined"在我的情况下。由于现在有人使用node-rdkafka没有问题,我认为这个问题可能与我的环境有关,但我在这个问题上浪费了几个小时而没有成功。
然后我尝试使用kafka-node代替,并且还遇到了问题。首先,它是" BufferMaker"取决于"应该" npm没有安装,我不知道为什么。我用ns -save-dev手动安装了所需的版本,然后编译了我自己的代码但是有这些警告:
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)
我似乎不可能每个人都有这些问题,因为只有少数人抱怨node-rdkafka问题而且我找不到其他任何有kafka-node问题的人。
因此,除了需要使用JS访问kafka集群的解决方案之外,我真正的问题是:Angular 4或Angular CLI与使用require的代码之间是否存在任何不兼容性?我是否将遗留代码与当前代码或类似内容混合在一起?
非常欢迎任何指向解决方案的指针。提前谢谢。
答案 0 :(得分:0)
这是我从开发人员那里收集的内容:这些库是基于官方C实现的包装器。因此,它不可能在Web客户端中使用它们。但是,可以在服务器中使用它们,因为您可以为特定平台构建它。如果您可以控制客户端的平台,那也没关系。
我打算做的是使用Confluent's Kafka REST Proxy在REST界面中公开kafka频道。这是平台中的具体项目:
https://github.com/confluentinc/kafka-rest
还有一个节点客户端:
但是,我还没有尝试过。它似乎只与linux兼容。