关于puppeteer的方法$$eval里用不了nanoid生成的id?-灵析社区

Fiona

大佬们,我使用puppeteer里的方法**$$eval** 去爬一下页面的数据,结果发现引入的nanoid不能使用,刚开始还以为是nanoid不支持commonJS写法导致的,结果调试发现在eval函数外使用可以打印成功,eval里使用就报错了 注意:$$eval返回一个promise async callback(pg) { console.log(nanoid());//这里能打印出来 const imgList = await pg.$$eval('div.swiper-wrapper>div.swiper-slide>div>img', els => els.map((el, index) => { return { imgUrl: el.src, alt: '图片', id: index, imgKey:nanoid()//这里不能使用nanoid } })) || [] return imgList } 报的错误: node:internal/process/promises:279 triggerUncaughtException(err, true /* fromPromise */); ^ Error [ReferenceError]: nanoid is not defined pptr:$$eval;Object.callback%20(D%3A%5C%E9%A1%B9%E7%9B%AE%5C%E7%88%AC%E8%99%AB%E7%B3%BB%E7%BB%9F%5Ccrawler%5Ccrawlers%5Cslider.js%3A8%3A34):6:24 at $$eval ($$eval at Object.callback (D:\项目\爬虫系统\crawler\crawlers\slider.js:8:34), :5:23) at $$eval ($$eval at Object.callback (D:\项目\爬虫系统\crawler\crawlers\slider.js:8:34), :0:12) at ExecutionContext.#evaluate (D:\项目\爬虫系统\crawler\node_modules\puppeteer-core\lib\cjs\puppeteer\common\ExecutionContext.js:254:55) at async ExecutionContext.evaluate (D:\项目\爬虫系统\crawler\node_modules\puppeteer-core\lib\cjs\puppeteer\common\ExecutionContext.js:151:16) at async CDPJSHandle.evaluate (D:\项目\爬虫系统\crawler\node_modules\puppeteer-core\lib\cjs\puppeteer\common\JSHandle.js:48:16) at async Promise.all (index 0) at async CDPElementHandle.$$eval (D:\项目\爬虫系统\crawler\node_modules\puppeteer-core\lib\cjs\puppeteer\api\ElementHandle.js:227:26) at async Object.callback (D:\项目\爬虫系统\crawler\crawlers\slider.js:8:25) at async module.exports (D:\项目\爬虫系统\crawler\libs\crawler.js:10:18) 有大佬知道为什么吗

阅读量:262

点赞量:12

问AI
你这么写试试: async callback(pg) { console.log(nanoid());//这里能打印出来 const imgList = await pg.$$eval('div.swiper-wrapper>div.swiper-slide>div>img', (els,nid) => els.map((el, index) => { return { imgUrl: el.src, alt: '图片', id: index, imgKey:nid()//这里不能使用nanoid } }),nanoid) || [] return imgList } 文档中说,要使用第三个参数传入 "image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241229/b76a1b03d2a13edc7dd41dd6c160e18d.png) "https://zhaoqize.github.io/puppeteer-api-zh_CN/#?product=Puppeteer&version=puppeteer-v21.2.1&show=api-pageevalselector-pagefunction-args" (https://link.segmentfault.com/?enc=7N95nhlO7DpaHtdNRQdlgw%3D%3D.xVUHkpfuVLlddRqmXtJaZqhybVxhC%2Bcor1XJfFRO40dxwM1k7%2FEsCUmhbH5ZPN3aBdntQML6myn2LcE6ISqWvWFgaeHc5V5jgTwHI8SUVsv48NKUuKlN7EeIW3JQGCewiwIXYwUSH%2FwmmqI4XTu7cuCA%2BXEM6qA2UPEAXSySaZ5%2B4aMAYr2KDlmswvyEQwil)