Actualmente estoy trabajando para abrir y escribir en un archivo de Excel usando exceljs. Sin embargo, la espera está cometiendo un error.
SyntaxError: await is only valid in async functions and the top level bodies of modulesA pesar de que la función está en asíncrono. ¿Como puedo resolver este problema? El siguiente es el código que estoy usando
async function Process(filename){ const workbook = new ExcelJS.Workbook(); let myPromise = new Promise(function(myResolve, myReject) { // "Producing Code" (May take some time) try{ await workbook.xlsx.readFile(filename) myResolve(); // when successful }catch(err){ myReject(); // when error } }); // "Consuming Code" (Must wait for a fulfilled Promise) myPromise.then( function() { /* code if successful */ }, function() {return false;} ); }De acuerdo con los comentarios, debe evitar el antipatrón del constructor Promise y nunca usar await en el ejecutor de una new Promise .
Deberías escribir cualquiera
function Process(filename){ const workbook = new ExcelJS.Workbook(); // "Producing Code" (May take some time) let myPromise = workbook.xlsx.readFile(filename); // "Consuming Code" return myPromise.then(function() { /* code if successful, waiting for a fulfilled Promise */ return …; }, function() { /* code when error, waiting for a rejected Promise */ return false; }); }o
async function Process(filename){ const workbook = new ExcelJS.Workbook(); try { // "Producing Code" (May take some time) await workbook.xlsx.readFile(filename); // "Consuming Code" (wait for the promise to be fulfilled) return …; } catch(err) { // Code when error in producing or consuming code return false; } }