puppeteer:console.log 在评估中触发错误“未处理的承诺拒绝”

Posted

技术标签:

【中文标题】puppeteer:console.log 在评估中触发错误“未处理的承诺拒绝”【英文标题】:puppeteer : console.log in evaluate triggers error "Unhandled promise rejection" 【发布时间】:2018-04-05 17:18:22 【问题描述】:
In puppeteer , when i want to use console.log from evaluate , it triggers me an error

const puppeteer = require('puppeteer');

(async () => 
  const browser = await puppeteer.launch(headless: false);

  const page = await browser.newPage();
  page.on('console', msg => console.log('PAGE LOG:', ...msg.args));
  await page.goto('http://google.com',  waitUntil: 'load');
  await page.evaluate(async() => console.log('url is $location.href'));
  browser.close();
)();  

(node:70544) UnhandledPromiseRejectionWarning: 未处理的承诺 拒绝(拒绝 id:1):TypeError:未定义不可迭代 (节点:70544)[DEP0018] 弃用警告:未处理的承诺 拒绝被弃用。在未来,承诺拒绝是 未处理将以非零退出终止 Node.js 进程 代码。

你知道怎么处理吗?

【问题讨论】:

【参考方案1】:

msg.args 值未定义,因此当您尝试使用扩展运算符 (...msg.args) 时,它会失败。

要么记录msg.args,要么将其包装在一个空/未定义的检查中

【讨论】:

以上是关于puppeteer:console.log 在评估中触发错误“未处理的承诺拒绝”的主要内容,如果未能解决你的问题,请参考以下文章

如何从 puppeteer 获取返回值? [复制]

puppeteer if判断对象存在

如何用 puppeteer 延迟这个评估

Puppeteer - 计算DOM中的元素

如何在 Puppeteers .evaluate() 方法中传递函数?

评估异步函数定义