为什么我的错误处理会因 fs.readFileSync() 而失败?

时间:2021-06-22 09:02:47

标签: javascript node.js ecmascript-6

如果我只通过 fs.readFileSync(filename, 'utf-8') 读取一个 JSON 文件它可以工作,但是当我添加错误处理时,我得到 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

2 个答案:

答案 0 :(得分:4)

readFileSync接受回调函数。它只接受两个参数。第三个参数(您传递给 ruleTemplate 赋值的函数的位置)被忽略。

readFileSync 返回一个字符串或缓冲区。

答案 1 :(得分:2)

正如 Quentin 所说,这是一个同步函数,所以它不会获得回调作为参数,试试这个:

const fs = require('fs');

let ruleTemplate;
try {
  fs.readFileSync('cmdCreateRule.json', 'utf8');
  ruleTemplate = JSON.parse(data);
}
catch (err) {
  throw err;
}
console.log(ruleTempate);

相关问题