Soy nuevo en javascript. Tengo un archivo js como el siguiente (test.js):
async function getData() { let a =100; // Some other function calls which modifies a // Some more console logs here. return a; } (async () => { console.log(await getData()); // When trying to return await getData() giving some error. })(); Estoy ejecutando la output = $(node test.js) en el script de shell y necesito el valor de a en el script de shell, pero aquí obtengo todas las declaraciones de console.log. ¿Es posible obtener el valor?
Si sabe que la salida siempre tendrá una línea (por salida me refiero al valor devuelto por getData() ), puede usar $(node test.js | tail -n 1) para tomar solo una última línea de node test.js . De lo contrario, puede hacer esta pequeña solución alternativa reemplazando la función console.log :
async function getData() { let a = 100; console.log("Some cosole log"); console.log("Some other log"); return a; } (async () => { console_log = console.log; // Save original function for later console.log = ()=>{}; // Replace original with "dummy" function console_log(await getData()); // Use saved original to log only what we want })(); Esto funcionará a menos que alguna parte del código use process.stdout.write para registrar/imprimir datos directamente. Para evitar esto, podemos reemplazar nuevamente process.stdout.write con alguna función ficticia, pero dado que es probable que esto rompa algunas otras cosas, lo evitaría.