Следующий код взят из службы REST Node.js. «генерировать» - это метод класса (не показан). Вызов «генерировать» показан ниже определения класса.
Когда я вызываю эту конечную точку, создается PDF («test.pdf»), и результаты возвращаются в браузер; однако, это пусто. Это как если бы вызов Handlebars не выполнялся или код опередил этот вызов и выполнил его с пустой строкой ("h").
При этом я зарегистрировал значение "h", и он достаточно точно отображает HTML-документ со всеми заполнителями Handlebar, заполненными правильно.
У меня есть чувство, что это связано с Обещаниями, но я не уверен. Надеюсь, другая пара глаз поможет мне увидеть проблему.
ПРИМЕЧАНИЕ. Мне известно об асинхронном / ожидании, однако я нахожусь на узле 6.9.5, поэтому он недоступен.
Заранее спасибо!
class PDF {
...
generate() {
return new Promise((resolve,reject)=>{
this.render().then((h)=>{
const browser = Puppeteer.launch({headless: true}).then((b)=>{
const page = b.newPage().then((p)=>{
p.setContent(h, {waitUntil: 'load'}).then(()=>{
p.pdf({path: 'test.pdf', format: 'A4'}).then((z)=>{
resolve(z);
});
});
});
});
});
});
}
}
// *****************************************************************************
// REST API Routes
// *****************************************************************************
app.get('/mysite/pdf', (req,res)=>{
var pdf = new PDF(33);
pdf.generate().then((data)=>{
res.contentType('application/pdf');
res.send(data);
});
});