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

MacOS Mojave 10.14.3全局安装Puppeteer失败,求排查方案

解决macOS Mojave全局安装Puppeteer的权限问题

嘿,我来帮你搞定这个头疼的权限问题~ 你遇到的核心问题其实是即使跳过Chromium下载,Puppeteer的安装脚本依然会尝试创建.local-chromium目录,而你用sudo su执行安装时,目录权限的配置导致了写权限被拒绝。另外,直接用root身份安装npm包本身就容易引发后续的权限坑,咱们一步步来修复:

第一步:清理残留的无效目录

先把之前安装失败留下的Puppeteer目录删掉,避免干扰:

sudo rm -rf /usr/local/lib/node_modules/puppeteer

第二步:修复npm全局目录的权限(关键!)

不要用sudo su来安装全局npm包,这会让全局目录的所有者变成root,后续各种权限坑。咱们把npm全局目录的所有权改回当前用户:

  1. 先确认npm全局路径:
    npm config get prefix
    
    正常输出应该是/usr/local
  2. 修改目录所有者:
    sudo chown -R $(whoami) $(npm config get prefix)/{lib/node_modules,bin,share}
    

第三步:重新全局安装Puppeteer

现在不需要用sudo,直接执行安装命令(如果你的全局npm配置已经设置了PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true,可以直接跑下面的命令;如果没设置,就把变量加在命令前面):

PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true npm install -g puppeteer

第四步:验证安装成功

运行下面的命令确认Puppeteer安装成功:

puppeteer --version

或者写个简单的测试脚本(比如test.js):

const puppeteer = require('puppeteer');

(async () => {
  const browser = await puppeteer.launch({
    executablePath: '/Applications/Chromium.app/Contents/MacOS/Chromium'
  });
  const page = await browser.newPage();
  await page.goto('https://example.com');
  await page.screenshot({ path: 'example.png' });
  await browser.close();
})();

运行脚本:node test.js,如果能生成截图就说明一切正常啦~

额外建议:用nvm管理Node版本

如果以后还遇到类似的全局包权限问题,推荐用nvm(Node Version Manager)来管理Node.js版本。nvm会把Node和全局npm包都安装在你的用户目录下,完全绕开系统级的权限限制,省心很多。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 04:03:12