Задать вопрос
proudmore
@proudmore

Как единожды создав объект браузера постоянно обращаться к нему?

Здравствуйте.

Имею в наличии следующее:
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
  • Вопрос задан
  • 69 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы