未处理的PromiseRejectionWarning:错误:评估失败:ReferenceError:未定义genera



它说评估失败:ReferenceError:generateLink没有定义,但我在同一文件中有generateLink函数,并在循环时在内部调用它

...
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('/');
}

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(() => { ... });

最新更新