Итак, я столкнулся с действительно странным поведением, которое я не могу исправить или найти кого-то с той же проблемой. Я работаю над системой плагинов для своего приложения, загружая объект js из файлов во время запуска. Я загружаю их с помощью eval, и у меня есть функции, и все работает. Однако, когда я пытаюсь записать свой объект JSON в «файл сохранения», он записывается, но по какой-то причине добавляется дополнительная скобка
Settings. json
{} "timesToRun": 5,
"stringForEnd": "We have finished!"
}
Plugin. js
{
name: 'My First Plugin',
author: 'Arcr0s',
target: 'myData',
settings:
{
timesToRun: 5,
stringForEnd: 'We have finished!'
},
settingsPath: './MyPlugin/Settings.json',
setup: function() {
},
job: function() {
ConnectionHub.requestHttps('xxxxxxxxx', this.callback);
},
callback: function(httpsData) {
currentSocket.write(httpsData);
}
}
Я пробовал преобразовать атрибут настроек в разные объекты и пары ke / value, но результат всегда один и тот же.
Фрагмент из приложения
let SettingsManager = {
defaultPath: './Plugins/Settings/',
loadSettings: function(plugin) {
var filePath = (plugin.settingsPath != undefined ? plugin.settingsPath : this.defaultPath + plugin.name + ".json");
console.log(filePath);
try {
if (fs.existsSync(filePath)) {
return fs.readFileSync(filePath,'utf8');
}
else {
this.saveSettings(plugin);
}
} catch(err) {
console.error(err)
}
},
saveSettings: function(plugin) {
var filePath = (plugin.settingsPath != undefined ? plugin.settingsPath : this.defaultPath + plugin.name + ".json");
fs.writeFile(this.defaultPath, JSON.stringify(plugin.settings,null, "\t"), function (err) {
if (err) throw err;
console.log('Settingsfile for ' + plugin.name + ' was saved successfully.');
});
}
}