You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js未处理Promise拒绝问题求助:async/await使用报错

解决async/await与Puppeteer代码中的UnhandledPromiseRejection错误

嘿,刚看到你第一次用async/await写Puppeteer代码遇到了未处理的Promise拒绝错误,咱们来快速定位并解决问题:

问题1:低级拼写错误

你代码最后一行的await broswer.close();里,broswer是拼写错误!正确的应该是browser——这个错误会直接抛出引用异常,而因为没有错误捕获逻辑,就触发了Node.js的UnhandledPromiseRejection警告。

问题2:缺少错误捕获机制

async函数里的任何异步操作(比如puppeteer.launch()、page.goto())如果失败,都会抛出异常并转化为被拒绝的Promise。如果没有用try/catch包裹这些操作,Node.js就会报出你看到的这个错误(新版本Node甚至会直接终止进程)。

修正后的完整代码

async function getPic(arg) {
  let browser; // 提前声明变量,确保finally块能访问到
  try {
    browser = await puppeteer.launch(/*{headless: false}*/);
    const page = await browser.newPage();
    await page.goto(arg);
    await page.setViewport({width: 1000, height: 500});
    await page.screenshot({path: 'pic.png'});
  } catch (error) {
    // 这里可以根据需求处理错误,比如打印日志、上报监控等
    console.error('截图操作失败:', error);
  } finally {
    // 无论成功还是失败,都确保浏览器实例被关闭,避免资源泄漏
    if (browser) {
      await browser.close();
    }
  }
}

额外提示

调用这个async函数的时候,也可以加上.catch()来处理可能的顶层错误:

// 示例调用
getPic('https://your-target-url.com')
  .catch(err => console.error('调用getPic时发生错误:', err));

这样修改后,不仅能解决你当前的未处理Promise错误,还能避免浏览器资源泄漏,同时让错误变得可追踪。

内容的提问来源于stack exchange,提问作者user1584421

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 06:49:00