Então uriel, estou usando node puro e js puro, apenas o express para API no back e a biblioteca Xlsx-populate para tratar os dados e jogar em uma planilha, o dado chega via POST do usuario o back processa, cria uma planilha e manda para o front, vou deixar abaixo um trecho do código que faz isso.

O código abaixo faz todo o tratamento com a planilha antes de enviar

let run = (structure) => { async function getTreatDatasFromAPI() { let structureToExcel = await structure; await excelPopulate(structureToExcel); return structureToExcel; }

let excelPopulate = async (arrayStructureforExcel) => { return XlsxPopulate.fromBlankAsync().then((workbook) => { // adiciona uma nova aba na planilha // let new_sheet = sheet.addSheet("Nova Sheet");

  // Nomeia uma aba da planilha como Planilha1

  const sheet = workbook.sheet(0);
  sheet.name("planilha");
  sheet.row(1).cell(1).value("Part Numbers");
  sheet.row(1).cell(2).value("Quantidade");
  sheet.row(1).cell(3).value("Preços com Fator 3");
  // Arrays que recebem posições das celulas no excel
  let cellColumnA = [];
  let cellColumnB = [];
  let cellColumnC = [];

  for (let i = 2; i <= arrayStructureforExcel.length + 1; i++) {
    cellColumnA.push(`A${i}`);
    cellColumnB.push(`B${i}`);
    cellColumnC.push(`C${i}`);
  }
  sum = 0;
  for (let i = 0; i < cellColumnA.length; i++) {
    sheet.cell(cellColumnA[i]).value(arrayStructureforExcel[i].PartNumber);
    sheet.cell(cellColumnB[i]).value(arrayStructureforExcel[i].Qtd);
    sheet.cell(cellColumnC[i]).value(arrayStructureforExcel[i].Preco);
    sheet
      .row(cellColumnC.length + 2)
      .cell(3)
      .value("Total: " + (sum += arrayStructureforExcel[i].Preco));
  }
  return workbook.toFileAsync("StructureAndPrizes.xlsx");
});

}; getTreatDatasFromAPI(); }; Código abaixo envia o arquivo que preciso atualizar antes de mandar para o usuario

const getAll = async (req, res, next) => { try { const workbook = await XlsxPopulate.fromFileAsync( "StructureAndPrizes.xlsx" ); // console.log(workbook);

Realiza edições no workbook, se necessário.

const data = await workbook.outputAsync();

Define o nome do arquivo de saída.
await res.attachment("pivot.xlsx");

Envia o workbook como resposta.
await res.send(data);

} catch (error) { next(error); } };

Então vc manda atulizar no FRONT e não atualiza no back. Ai vc precisa mandar atualizar de novo, finalmente atualizando no back?

Ou é no front?

É isso?

Na verdade pelo front só é feito a requisição, e no back end que eu faço todo o tratamento da planilha para mandar novamente Desculpa a demora para responder
Vc precisa mudar para usar stream. Stream não deixar o buffer encher e manda tudo pro front ou outro lugar. Vc fazendo isso esta enchendo a memoria. O buffer cheio da problema! Para ajudar https://www.freecodecamp.org/portuguese/news/streams-em-node-js-tudo-o-que-voce-precisa-saber/ https://www.youtube.com/watch?v=pB5-QzabL2I&ab_channel=ErickWendel https://www.youtube.com/watch?v=r-33Hhbvr1M&ab_channel=ErickWendel https://nodesource.com/blog/understanding-streams-in-nodejs/
Certo vou olhar os links, tentei limpar o cache manualmente pra ver se funcionava mas também não foi. Vou sobre as node js streams.
Fala Uriel, cara, na verdade eu descobri qual é o problema porém não consigo resolver, essa aplicação cria uma planilha excel no back end com as infos do usuario, porém quando o usuario clica no botão baixar planilha ele é redirecionado para uma rota de download que tem algumas funções no back end que puxam outras, e o back end está sem uma lógica asíncrona que espera a informação do usuario carregar para fazer a planilha. O que acontece é que quando o usuario clica em download primeiro é baixado planilha depois a informação que o usuario pediu fica armazenado nela e então no segundo click ele manda o que o usuario pediu na primeira solicitação. Usar async await nesse caso é o mais indicado certo ?
Olha, não ta dando pra entender direito isso! Não consigo entender bem sua explicação! async await é só pra não bloquear o loop de eventos do Node ou do navegador! Assim não travando o Node ou o Navegador entende. É pra isso que usamos async await. Vc dise que descobriu o problema, vc pode espcificar melhor?