J'essaye de lire d'un dossier dans le noeud. Voici mon code:Pourquoi ma fonction readFileSync n'est-elle pas en cours d'exécution?
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)
Pour une raison quelconque, l'readFileSync n'exécute pas du tout. La seule chose qui est enregistrée est 'fait de lire le fichier ...'
Cependant, quand je l'ai changé à readFile()
(au lieu de la synchronisation), la fonction s'exécute et fonctionne comme prévu. Qu'est-ce que je rate?
Un avis: Vous semblez maîtriser le code asynchrone et les rappels, ce qui est la méthode de programmation encouragée dans le nœud. Vous voudrez peut-être coller avec cela au lieu de changer la méthode pour synchrone – CodingIntrigue
Dans ce cas particulier, ce n'est vraiment pas nécessaire, mais je le ferais habituellement –
Bien sûr, merci d'avoir attrapé cela! –