Почему моя обработка ошибок не выполняется с помощью fs.readFileSync()?

#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);