koa2 UnhandledPromiseRejectionWarning
- 运行下面代码后报错,不知道怎么修改,望大神指出错误点。
- 报错
(node:2920) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejec
tion id: 1): Error: Navigation Timeout Exceeded: 30000ms exceeded
(node:2920) [DEP0018] DeprecationWarning: Unhandled promise rejections are depre
cated. In the future, promise rejections that are not handled will terminate the
Node.js process with a non-zero exit code.
- 代码如下
const puppeteer = require('puppeteer')
const url = `https://movie.douban.com/tag/#/?sort=R&range=6,10&tags=%E7%94%B5%E5%BD%B1,%E6%BE%B3%E5%A4%A7%E5%88%A9%E4%BA%9A`
const sleep = time => new Promise(resolve => {
setTimeout(resolve, time)
})
;(async () => {
console.log('Start visit the target page')
const browser = await puppeteer.launch({
args: ['--no-sandbox'],
dumpio: false
})
const page = await browser.newPage()
await page.goto(url, {
waitUntil: 'networkidle2'
})
await sleep(3000)
await page.waitForSelector('.more')
for (let i = 0; i < 2; i++) {
await sleep(3000)
await page.click('.more')
}
const result = await page.evaluate(() => {
var $ = window.$
var items = $('.list-wp a')
var links = []
if (items.length >= 1) {
items.each((index, item) => {
let it = $(item)
let doubanId = it.find('div').data('id')
let title = it.find('.title').text()
let rate = Number(it.find('.rate').text())
let poster = it.find('img').attr('src').replace('s_ratio', 'l_ratio')
links.push({
doubanId,
title,
rate,
poster
})
})
}
return links
})
browser.close()
process.send({result})
process.exit(0)
})()
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
首先你这个错误信息,是你没有处理
promise
的错误情况,你要在你async
函数中添加try....catch
进行异常捕获,方便调试错误信息第二你用
puppeteer
获取信息的代码是正确的,你把注释掉就正确了
你看是不是你的主进程报的错
刚好我也在练手这个项目,你加梯子,就可以爬到了,默认欲歌浏览器给墙了,现在双层墙。