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在这种特殊情况下,它确实不需要,但我通常会这样做,谢谢您的关注!