Я работаю над API, разработанным для запуска некоторых JS на странице, открытой в Puppeteer, но я не хочу продолжать открывать / закрывать и ждать загрузки страницы, так как это тяжелая страница контента.
Можно ли запустить forever start
на сценарии узла, который запускает страницу и сохраняет ее открытой навсегда, а затем вызывать отдельный сценарий узла, когда это необходимо для запуска некоторого JavaScript на этой странице?
IВы пытались сделать следующее, но кажется, что страница не открыта:
keepopen.js
'use strict';
const puppeteer = require('puppeteer');
(async() => {
const start = +new Date();
const browser = await puppeteer.launch({args: ['--no-sandbox']});
const page = await browser.newPage();
await page.goto('https://www.bigwebsite.com/', {"waitUntil" : "networkidle0"});
const end = +new Date();
console.log(end - start);
//await browser.close();
})();
runjs.js
'use strict';
const puppeteer = require('puppeteer');
(async() => {
const start = +new Date();
const browser = await puppeteer.launch({args: ['--no-sandbox']});
const page = await browser.targets()[browser.targets().length-1].page();
const hash = await page.evaluate(() => {
return runFunction();
});
const end = +new Date();
console.log(hash);
console.log(end - start);
//await browser.close();
})();
Я запускаю следующее: forever start keepopen.js
, а затем runjs.js
, но я получаю сообщение об ошибке:
(node:1642) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'evaluate' of null