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

Mac下使用默认浏览器启动Puppeteer报错求助

Mac下Puppeteer启动Chrome后打开新页面报错的解决方案

核心问题及修复步骤:

  • page变量未定义:代码里只启动了browser实例,但没创建或获取page对象就直接调用page.goto(),这是报错的直接原因,必须先创建页面实例再操作。
  • 默认配置目录冲突:如果本地Chrome正在运行,Puppeteer无法复用同一个用户数据目录,会触发资源占用冲突。建议先关闭本地Chrome,或者复制一份默认配置目录单独给Puppeteer使用。
  • 权限问题:Mac系统下访问~/Library/Application Support/Google/Chrome可能存在权限限制,要确保Node进程有该目录的读写权限。

修正后的完整代码:

const puppeteer = require('puppeteer');
const path = require('path');

async function launchBrowser() {
  // 可选:复制默认配置目录到新路径,避免与本地Chrome冲突
  // const userDataDir = path.join(process.env.HOME, 'Library/Application Support/Google/Chrome_Puppeteer');
  const userDataDir = path.join(
    process.env.HOME,
    'Library/Application Support/Google/Chrome'
  );

  try {
    const browser = await puppeteer.launch({
      headless: false,
      executablePath: '/Applications/Google Chrome.app/Contents/MacOS/Google Chrome',
      userDataDir: userDataDir,
      args: [
        '--start-maximized',
        '--no-sandbox',
        '--disable-setuid-sandbox',
        '--profile-directory=Default',
        '--no-first-run',
      ],
      defaultViewport: null,
      ignoreDefaultArgs: ['--enable-automation'],
    });

    // 新增:创建page实例
    const page = await browser.newPage();
    await page.goto("https://www.google.com/");

    // 后续操作代码可添加在此处

  } catch (error) {
    console.error('启动错误:', error);
    console.error('Chrome路径:', '/Applications/Google Chrome.app/Contents/MacOS/Google Chrome');
    console.error('用户数据目录:', userDataDir);
    throw error;
  }
}

launchBrowser()

额外建议:

  1. 测试前优先关闭本地运行的Chrome,避免配置目录冲突。
  2. 若不想关闭本地Chrome,复制默认配置目录到新路径(如代码注释示例),修改userDataDir指向新路径,让Puppeteer使用独立配置,不影响本地Chrome。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 00:22:08