#javascript #node.js #ecmascript-6
Вопрос:
Если я просто прочитаю файл JSON fs.readFileSync(filename, 'utf-8')
, он будет работать, но когда я добавлю обработку ошибок, я получу undefined
.
const fs = require('fs');
let ruleTemplate;
fs.readFileSync('cmdCreateRule.json', 'utf8', function (err, data) {
if (err) {
throw err;
} else {
ruleTemplate = JSON.parse(data);
};
});
console.log(ruleTempate);
Вопрос
Кто-нибудь может понять, почему ruleTemplate
становится undefined
?
Комментарии:
1. Вы не должны указывать обратный вызов при вызове
somethingSync()
. Это выдаст ошибку, если возникнет проблема даже без обратного вызова.
Ответ №1:
readFileSync
не принимает функцию обратного вызова. Он принимает только два аргумента. Третий аргумент (в котором вы передаете свою функцию, которая присваивает значение ruleTemplate
) игнорируется.
readFileSync
возвращает строку или буфер.
Ответ №2:
Как сказал Квентин, это синхронная функция, поэтому она не получает обратный вызов в качестве параметра, попробуйте это:
const fs = require('fs');
let ruleTemplate;
try {
fs.readFileSync('cmdCreateRule.json', 'utf8');
ruleTemplate = JSON.parse(data);
}
catch (err) {
throw err;
}
console.log(ruleTempate);