S
I’ve tried with global variables, but I could not make it work.
Now I’ve made a separate module for the storage management:
// storage.js
const fs = require('fs');
let settings = null;
let devices = null;
function getSettings() {
try {
settings = JSON.parse(fs.readFileSync('./settings.json', 'utf8'));
} catch (error) {
console.log('settings.json file not found.');
}
if (!settings)
settings = {
A: true,
B: false,
};
console.log(settings);
return settings;
}
function setSettings(newSettings) {
fs.writeFileSync('./settings.json', JSON.stringify(newSettings));
}
function getDevices() {
try {
devices = JSON.parse(fs.readFileSync('./devices.json', 'utf8'));
} catch (error) {
console.log('devices.json file not found.');
}
if (!devices) devices = {};
console.log(devices);
return devices;
}
function setDevices(newDevices) {
fs.writeFileSync('./devices.json', JSON.stringify(newDevices));
}
module.exports = {
settings,
devices,
getSettings,
setSettings,
getDevices,
setDevices,
};
// server.js
const config = require('./config');
var storage = require('./storage.js');
const mqtt = require('./mqtt.js')
function main() {
var settings = storage.getSettings();
console.log(`settings ${settings}`); //Works
console.log(`storage.settings ${storage.settings}`); //Doesn't
setInterval(function() {
console.log('*Timer tick!*');
}, 5000);
}
main();
If you look on the two console outputs, the second one is null. And I don’t see why. So now I want to populate storage on mqtt.js, but isn’t available there.