Estoy tratando de leer un archivo y dividirlo en varios caracteres. Si coloco la declaración de registro dentro del bloque rl.on, obtengo algunos resultados, pero por alguna razón, el diccionario vuelve a estar vacío cuando finaliza el bloque.
let rl = readline.createInterface({ input: fs.createReadStream('Spanish.txt'), }) let dict={}; let arr1=[]; let arr2=[]; rl.on(`line`, (line)=>{ if (!line.startsWith('#')){ arr1=line.split('\t'); if (arr1[1]!=undefined) { arr2 = arr1[1].split('[').join(',').split('/'). join(',').split('(').join(',').split(','); dict[arr1[0]]=arr2[0]; } } }); console.log(dict);Las líneas se leen de forma asincrónica, por lo que cuando registras tu dict , el procesamiento aún no se ha completado.
Puede escuchar el evento declose para determinar si el archivo se ha leído por completo:
rl.on('close', () => console.log(dict)); Mejor aún, use un enfoque basado en async / await como se detalla en la documentación de Node.js.