傀儡师事件错误处理程序不要去捕获块



我正在用puppeteer(nodejs)创建一个网络刮擦,在网络刮擦的某些特定部分中,我正在听一个事件,当浏览器启动一个带有一个带有一个的事件信息。在启动此事件时,我提出了一个例外,但是此例外使主要过程退出,并且不会抓住(err)

示例:

let page = null
const login = async () => {
  //Event listening
  page.on('dialog', async dialog => {
    throw new Error('login_error')
  }
async function processWebScraping () {
  try{   
     page = // Initialize puppeteer page
     await login() 
     [...]
  } catch(e){
     // the Error doen't come here, i got an uncaughtException 
     console.log(e) 
  }

有人知道我该如何遇到此错误?

尝试将侦听器包装在Promise中。这样做将允许调用.then()解析它,并召集.catch()以捕获错误。在您的示例中,它看起来像这样

const login = () => new Promise((resolve, reject) => {
  page.on('dialog', dialog => {
    reject(new Error('login_error'));
  });
});
function processWebScraping() {
  // page initialization
  login().then(() => {
    console.log('No error here');
  }).catch(err => {
    // Handle the error
    console.error(err);
  });
}

最新更新