UnhandledPromiseRejectionWarning: Ошибка: ошибка оценки: ReferenceError: generateLink не определен - PullRequest
1 голос
/ 28 февраля 2020

сказано, что оценка завершилась неудачно: ReferenceError: generateLink не определен, но у меня есть функция generateLink для того же файла, и я вызываю его внутри, пока l oop

...

const browser = await puppeteer.launch()
const page = await browser.newPage()        
await page.goto(url)
await page.waitFor(1000)  
const cafeArray = [];  
const data = await page.evaluate(() => {
   const options = document.querySelectorAll('option')
   const max = options[options.length-1].innerText
   let char = 1;
   console.log(char);
   while(char <= Number(max)) {
      link = generateLink(url, stringIncrease(String(char), Number(max)))
      cafeArray.push(link)
      char++;
   }
   const urls = getSrc(cafeArray);
   return urls
})

console.log('data:',data)
await browser.close();

return data;
}
...

function generateLink(url, page) {
   const arr = url.split('/');
   arr.pop()
   arr.push(page)

   return arr.join('/');
}

1 Ответ

0 голосов
/ 28 февраля 2020

Код внутри evaluate выполняется в контексте браузера (он же внутри браузера). Это означает, что код, выполняемый внутри браузера, не увидит функцию generateLink.

Вы можете «выставить» эту функцию, используя exposeFunction.

await page.exposeFunction('generateLink', (url, page) => {
   const arr = url.split('/');
   arr.pop()
   arr.push(page)

   return arr.join('/');
});

const data = await page.evaluate(() => { ... });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...