TypeError: Клиент не является конструктором - ошибка в последней версии kafka-узла
Моска дает эту ошибку:
TypeError: Client is not a constructor
at new KafkaAscoltatore (/home/x/Desktop/broker/node_modules/mosca/node_modules/ascoltatori/lib/kafka_ascoltatore.js:59:26)
at Object.build (/home/x/Desktop/broker/node_modules/mosca/node_modules/ascoltatori/lib/ascoltatori.js:77:12)
at /home/x/Desktop/broker/node_modules/mosca/lib/server.js:181:40
at makeCall (/home/x/Desktop/broker/node_modules/fastseries/series.js:117:7)
at ResultsHolder.release (/home/x/Desktop/broker/node_modules/fastseries/series.js:96:9)
at series (/home/x/Desktop/broker/node_modules/fastseries/series.js:39:14)
at Object.series (/home/x/Desktop/broker/node_modules/steed/steed.js:90:7)
at new Server (/home/x/Desktop/broker/node_modules/mosca/lib/server.js:171:9)
at Object.<anonymous> (/home/x/Desktop/broker/broker.js:118:14)
at Module._compile (internal/modules/cjs/loader.js:689:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:700:10)
at Module.load (internal/modules/cjs/loader.js:599:32)
at tryModuleLoad (internal/modules/cjs/loader.js:538:12)
at Function.Module._load (internal/modules/cjs/loader.js:530:3)
at Function.Module.runMain (internal/modules/cjs/loader.js:742:12)
at startup (internal/bootstrap/node.js:266:19)
at bootstrapNodeJSCore (internal/bootstrap/node.js:596:3)
Среда
- Версия узла:v10.9.0
- Кафка-узел версия: последняя
- Моска версия: последняя
Что я пробовал
я открыл /home/x/Desktop/broker/node_modules/mosca/node_modules/ascoltatori/lib/kafka_ascoltatore.js
и после просмотра строки ниже выяснил, что проблема связана с версией kafka-node:
this._opts.kafka = this._opts.kafka || require("kafka-node");
Когда я удалил this._opts.kafka
, он начал работать нормально. Затем я распечатал оба документа и понял, что в новой версии нет конструктора клиента. Вот мой результат печати:
this._opts.kafka (kafka-node v4.0.1 latest)
возвращает HighLevelProducer, у которого нет Client, с другой стороны, require("kafka-node") (v0.5.9) возвращает HighLevelConsumer.
Код:
var backend = {
type: "kafka",
kafka: require('kafka-node'),
json: false,
connectionString: "IP:2181",
defaultEncoding: "utf8",
};
var moscaSettings = {
interfaces: [
{ type: "mqtt", port: PORT }
],
id: "mosca",
stats: false,
publishNewClient: false,
publishClientDisconnect: false,
publishSubscriptions: false,
backend: backend,
};
var server = new mosca.Server(moscaSettings); // Error pops here
Я мог бы заставить Кафку работать со старой версией, как я уже упоминал выше, но я думаю, что это будет только быстрое решение, поэтому я надеюсь, что кто-нибудь может привести меня к правильному решению.
0 ответов
Проблема возникла из-за того, что я использовал пример из старой версии kafka-node. Когда я заменил код новым примером из kafka-node GitHub, проблема была решена.