У меня есть функция, которая очищает элемент и возвращает значение элемента.Это код reale-scraper.js :
module.exports.RealeScraper = function() {
return new Promise((res, rej) => {
var url = 'example.com';
var compagnia;
//Start Puppeteer and scrape element
ptr.launch().then(async browser => {
const page = await browser.newPage();
await page.setViewport({ width: 1280, height: 800 });
await page.goto(url, {waitUntil: "networkidle0"});
await page.type('input[name="username"]', config.utente);
await page.type('input[name="password"]', config.pass);
await Promise.all([
page.click('input[type="SUBMIT"]'),
page.waitForNavigation({waitUntil: 'networkidle2'})
]);
await page.waitForSelector('#tableSceltaProfilo > tbody > tr:nth-child(1) > td:nth-child(2)');
const element = await page.$("#tableSceltaProfilo > tbody > tr:nth-child(1) > td:nth-child(2)");
compagnia = await page.evaluate(element => element.textContent, element);
await page.screenshot({path: 'screenshot.png'});
await browser.close();
});
res(compagnia);
});
}
Затем я вызываю эту функцию и пытаюсь отправить данные в мой шаблон ejs в home.js :
var scraper = require('../scrapers/reale-scraper');
router.get('/home', function(req, res, next) {
RealeScraper().then((compagnia) => {
res.render('nuovo-sinistro', {
titolo: 'Manager Perizie',
compagnia: compagnia
});
}).catch((error) => {
console.log(error);
});
});
Я хочу дождаться окончания RealeScraper и вернуть мне значение, чтобы я мог передать его в res.render.Я пытался использовать Promise, но это не работает.Это не дает мне ошибок, но когда я загружаю страницу, функция не запускается и отображается без переменной.
Я также пробовал разные методы, но в итоге загрузка страницы длилась вечно
Любая помощь будет очень признательна, спасибо!