Node.js 识别未经处理的错误承诺

Node.js 识别未经处理的错误承诺,node.js,asynchronous,promise,async-await,puppeteer,Node.js,Asynchronous,Promise,Async Await,Puppeteer,我有以下代码: // <-- add event on top of file process.on("unhandledRejection", (reason, p) => { console.error("Unhandled Rejection at: Promise", p, "reason:", reason); // browser.close(); // <-- no need to close the browser here })

我有以下代码:

// <-- add event on top of file
process.on("unhandledRejection", (reason, p) => {
        console.error("Unhandled Rejection at: Promise", p, "reason:", reason);
        // browser.close(); // <-- no need to close the browser here
});

const puppeteer = require('puppeteer');
async function getPic() {
    try{ // <-- wrap the whole block in try catch
      const browser = await puppeteer.launch(/*{headless: false}*/);
      const page = await browser.newPage();
      await page.setViewport({width: 1000, height: 500}); // <-- add await here so it sets viewport after it creates the page


      //await page.goto('https://www.google.com');  //Old way of doing. It doesn't work for some reason...

      page.goto('https://www.google.com/'); // async


      // wait for either of events to trigger
      await Promise.race([
        page.waitForNavigation({waitUntil: 'domcontentloaded'}),
        page.waitForNavigation({waitUntil: 'load'})
      ]);


      await page.screenshot({path: 'pic.png'});
      await browser.close(); // <-- close browser after everything is done
    } catch (error) {
      console.log(error);
    }
}

getPic();
//{
console.error(“未处理的拒绝:承诺”,p,“原因:,原因”);

//browser.close();//
page.goto('https://www.google.com/“).catch(error=>console.log(“这不由try-catch处理,因为您没有等待它”,error));
If
page.goto('https://www.google.com/')
返回一个承诺,你不必等待它,它的错误就不会被处理。这太烦人了-你能发布剩下的堆栈跟踪吗?我想我们可以用这些堆栈跟踪做得更好。啊,我刚刚意识到-为了获得一个好的体验,用
节点yourfile.js打开节点-检查-检查brk
,然后打开li控制台中的nk-附加了一个调试器。在它的标签“暂停抛出异常”中,出现问题的地方会有代码中断。@generalhenry谢谢!因为我使用了你的代码,我得到的是:这不是由try-catch处理的,因为你不等待它错误:导航未超时:承诺超过30000ms。然后(C:\Users\User1\Desktop\fb proj\pupet test\node\u modules\pup eteer\lib\NavigatorWatcher.js:71:21)位于);
Unhandled Rejection at: Promise Promise {
  <rejected> Error: Navigation Timeout Exceeded: 30000ms exceeded
    at Promise.then (C:\...\pupet test\node_modules\pupp
eteer\lib\NavigatorWatcher.js:71:21)
    at <anonymous> } reason: Error: Navigation Timeout Exceeded: 30000ms exceede
d
    at Promise.then (C:\...\pupet test\node_modules\pupp
eteer\lib\NavigatorWatcher.js:71:21)
    at <anonymous>