如果我只通过 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
?
答案 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);