Me gustaría hacer una matriz a partir de un archivo, como esta:
'use strict'; const fs = require('fs'); var results = []; fs.readFile('myfile.json', (err, data) => { if (err) throw err; results = JSON.parse(data); //console.log(results); This works file }); console.log('results length:', results.length); for ( r in results) { console.log('res', r); console.log(r.configuration.value); }Puedo ver que el objeto json está impreso en la consola.
Sin embargo, cuando quiero acceder fuera de fs.readFile , obtengo
results length: 0Y el ciclo no itera.
Me pregunto ¿cómo puedo arreglar esto?
fs.readFile() es asincrónico y está intentando usar results antes de que se complete.
Use fs.readFileSync() en lugar de fs.readFile()
var results = JSON.parse(fs.readFile('myfile.json', {encoding: 'utf8'}));Obtenga más información sobre las devoluciones de llamada de Node. https://nodejs.org/en/knowledge/getting-started/control-flow/what-are-callbacks/
O, mejor, pruebe la versión async/await de las funciones fs.