Javascript 为什么readFileSync函数没有执行?
我正在尝试读取节点中的文件。这是我的密码:Javascript 为什么readFileSync函数没有执行?,javascript,node.js,cheerio,Javascript,Node.js,Cheerio,我正在尝试读取节点中的文件。这是我的密码: const cheerio = require('cheerio'); var fs = require('fs'); var path = process.argv[2]; var glossArr = [] fs.readFileSync(path, {encoding: "utf8"}, function (err, markup){ console.log('function executing') if (err) th
const cheerio = require('cheerio');
var fs = require('fs');
var path = process.argv[2];
var glossArr = []
fs.readFileSync(path, {encoding: "utf8"}, function (err, markup){
console.log('function executing')
if (err) throw err;
const $ = cheerio.load(markup);
var glossar = $('body').children().last();
var index = $('body').children().last().prev();
glossar.children().children().children().each(function(i, elem) {
var obj = {};
var container = $(this).children();
var unter = container.children();
var begriff = unter.first().text();
var text = unter.last().text();
obj[begriff] = text;
obj['file'] = path;
glossArr.push(obj)
});
});
console.log('done reading file...')
var glossString = JSON.stringify(glossArr)
var result = 'export default ' + glossString
fs.writeFileSync('./data/data.js', result)
出于某种原因,readFileSync根本不执行。唯一记录的是“完成读取文件…”
但是,当我将其改为readFile而不是sync时,该函数会按预期执行和工作。我缺少什么?readFileSync不接受回调参数,因为它是同步的。您需要更改代码,以便将代码从回调中移动到同步函数下:
var markup = fs.readFileSync(path, {encoding: "utf8"});
const $ = cheerio.load(markup);
// ...
为了澄清,正在执行readFileSync,只是您没有对结果执行任何操作,并且您的回调参数被忽略。fs.readFile的fs.readFileSync同步版本。返回路径的内容
返回内容后,您可以执行您想要执行的任务。
要了解更多信息,请使用以下链接一个观点:您似乎掌握了异步代码和回调,这是Node中受鼓励的编程方法。您可能希望继续使用它,而不是将方法更改为Synchronous在这种特殊情况下,它确实不需要,但我通常会这样做,谢谢您的关注!