gerar-boletos
gerar-boletos copied to clipboard
streamToPromise não resolve a Promise
Nos exemplos de uso, na parte do código abaixo:
novoBoleto.pdfFile().then(async ({ stream }) => {
// ctx.res.set('Content-type', 'application/pdf');
await streamToPromise(stream); <<< ==== Não resolve a Promise
}).catch((error) => {
return error;
});
Se colocarmos algo para aguardar o retorno da Promise: await streamToPromise(stream);
, o codigo não ira rodar porque a Promise não esta sendo resolvida, ficando assim aguardando o termino do Promise eternamente. Ex.:
novoBoleto.pdfFile().then(async ({ stream }) => {
// ctx.res.set('Content-type', 'application/pdf');
await streamToPromise(stream);
fazerQualquerCoisa(); <<<< ==== não vai chamar a função porque a Promise da linha acima não esta sendo resolvida, mesmo o PDF sendo gerado
}).catch((error) => {
return error;
});
Tentei corrigir mas não tive capacidade de fazer =(
Olá, também estou tendo esse problema e sem capacidade de ajustar hehe Agradeceria uma ajudinha.
Olá, já faz um tempo que essa discurção foi aberta, mas pode servir para futuras implementações. Corrigir esse erro no meu fork, mas esse método de gerar o pdf mudou um pouco.
try {
novoBoleto.gerarBoleto();
const stream = await novoBoleto.pdfFile("./tmp", "boleto");
stream.on("end", () => {
fazerQualquerCoisa();
});
} catch (error) {
throw error;
}
@joaoeymard, até tentei utilizar o seu fork, mas após a instalação e execução, recebi o erro abaixo.
E este é o código que executei.
Outra pergunta, como posso obter os dados do boleto, incluído a linha digitável após a promise se resolvida ? Onde contem o trecho fazerQualquerCoisa();
?!!
const { Bancos, Boletos, streamToPromise } = require('../lib/index');
const boleto = {
banco: new Bancos.Bradesco(),
...
};
async function execute() {
const novoBoleto = new Boletos(boleto);
try {
novoBoleto.gerarBoleto();
const stream = await novoBoleto.pdfFile("./tmp", "boleto");
stream.on("end", () => {
console.log('fazerQualquerCoisa')
//fazerQualquerCoisa();
});
} catch (error) {
console.log(error)
throw error;
}
}
execute();
@wagnerfillio já fiz várias modificações para atender a minha necessidade. Assim pode ser necessário trabalhar diferente de como está na documentação. Estou a disposição para tirar mais dúvidas