Я подключаюсь к MQTT следующим образом:
//mqtt.js
const mqtt = require('mqtt');
var options = {
//needed options
};
var client = mqtt.connect('mqtt://someURL', options);
client.on('connect', () => {
console.log('Connected to MQTT server');
});
Я хочу экспортировать объект client следующим образом:
//mqtt.js
module.exports = client;
Чтобы я мог импортировать его в другие файлы и использовать его следующим образом:
//anotherFile.js
const client = require('./mqtt');
client.publish(...)
Однако мы все знаем, что это не сработает! Как мне этого добиться?
Обновление
Я пытался обещать и получал очень странное поведение. Когда я использую обещание в том же файле (mqtt.js), что и код ниже, все в порядке:
//mqtt.js
const mqtt = require('mqtt');
var mqttPromise = new Promise(function (resolve, reject) {
var options = {
//needed options
};
var client = mqtt.connect('mqtt://someURL', options);
client.on('connect', () => {
client.subscribe('#', (err) => {
if (!err) {
console.log('Connected to MQTT server');
resolve(client);
} else {
console.log('Error: ' + err);
reject(err);
}
});
});
});
mqttPromise.then(function (client) {
//do sth with client
}, function (err) {
console.log('Error: ' + err);
});
Но когда я экспортирую обещание и использую его в другом файле, например:
//mqtt.js
//same code to create the promise
module.exports = mqttPromise;
//anotherFile.js
const mqttPromise = require('./mqtt');
mqttPromise.then(function (client) {
//do sth with client
}, function (err) {
console.log('Error: ' + err);
});
Я получаю эту ошибку:
TypeError: mqttPromise.then не является функцией