Здравствуйте.
Имею в наличии следующее:
const express = require('express')
const puppeteer = require('puppeteer');
const app = express()
const port = 3000
app.get('/render', (req, res) => {
(async (req) => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto(req.query.url, {waitUntil: 'networkidle2'});
await page.emulateMediaType('screen')
await page.setViewport({
width: 400,
height: 1080,
deviceScaleFactor: 1,
});
console.log(req.query.url)
await page.pdf({
path: 'hn.pdf',
format: 'A4',
margin: {
top: 15,
bottom: 15,
right: 15,
left: 15
}
});
console.log('rendered')
await browser.close();
})(req)
res.send('123')
})
app.listen(port, () => {
console.log(`Example app listening at http://localhost:${port}`)
})
Хочу ускорить рендеринг, не создавая объект браузера на каждый запрос, а воспользоваться им как закешированным в оперативной памяти ресурсом.
Вынос создания объекта браузера за обработчик /render приводит к ошибке TypeError: browser.newPage is not a function
Подскажите, как быть?
P.S. не пинайте сильно, я не очень понимаю как пользоваться всеми возможностями node.js