gpt4 book ai didi

javascript - Angular 4 以及 Node-rdkafka 和 kafka-node 的加载问题

转载 作者:太空宇宙 更新时间:2023-11-04 02:03:01 26 4
gpt4 key购买 nike

我对 Web 前端开发非常陌生,在加载 kafka 客户端库时我对 JS/Node/Angular 世界有点迷失。我考虑了两种访问我的 kafka 集群的选项:node-rdkafka 和 kafka-node。然而,我不认为我的问题在于他们,这似乎是缺乏关于 JS 和/或 Node 或其他什么的知识。我将解释实际问题,并在最后回到这个概念。

这是我第一次涉足 JS/Node/Angular 世界,所以我对它的了解仍然非常有限,请容忍任何菜鸟错误。我开始使用 Angular cli (1.2.3) 来构建我的组件、服务等。一切都很顺利,直到我尝试加载 node-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')”开始加载库。然而,它的依赖项之一 Node 绑定(bind)存在一个错误。我发现已经有一个修复程序,所以我将其版本更改为最新提交,只是为了满足一个已经报告但从未回答的新错误:

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

我尝试查看 Node 绑定(bind)代码,发现它需要“fs”和“path”,并且在我的情况下这些要求返回“未定义”。由于现在有人使用node-rdkafka没有问题,我认为问题可能出在我的环境上,但我在这方面浪费了几个小时却没有成功。

然后我尝试使用 kafka-node 代替,但也遇到了问题。首先,“BufferMaker”依赖项依赖于“Should”,但 npm 没有安装它,我不知道为什么。我使用 --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)

在我看来,似乎不可能每个人都遇到这些问题,因为只有少数人提示 node-rdkafka 问题,而且我找不到其他人遇到 kafka-node 问题。

所以,除了需要一个使用 JS 访问 kafka 集群的解决方案之外,我真正的问题是:Angular 4 或 Angular CLI 与使用 require 的代码之间是否存在不兼容?我是否将旧代码与当前代码或类似代码混合在一起?

任何指向解决方案的指针都将受到欢迎。提前致谢。

最佳答案

这是我从开发人员那里收集到的信息:这些库是基于官方 C 实现的包装器。因此,不可能在 Web 客户端中使用它们。不过,可以在服务器中使用它们,因为您可以为您的特定平台构建它。如果您可以控制客户端的平台也可以。

我打算做的是使用Confluent's Kafka REST Proxy它在 REST 接口(interface)中公开 kafka channel 。以下是平台中的具体项目:

https://github.com/confluentinc/kafka-rest

还有一个 Node 客户端:

https://github.com/confluentinc/kafka-rest-node

不过我还没有尝试过。它似乎只兼容Linux。

关于javascript - Angular 4 以及 Node-rdkafka 和 kafka-node 的加载问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45288601/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com