macOS下Puppeteer启动报错Socket路径过长怎么解决?
解决方案
方案1:手动指定短路径的用户数据目录(最稳妥,无需修改其他配置)
Puppeteer默认会读取当前环境的TMPDIR作为Chromium临时数据目录的根路径,你只需要在启动参数里手动指定一个短路径的用户数据目录,即可绕开Shortcuts留下的长路径:
const puppeteer = require('puppeteer'); (async () => { const browser = await puppeteer.launch({ headless: false, // show the browser devtools: true, // open dev tools defaultViewport: null, // ensure that browser viewport fills the window args: [ '--disable-web-security', // disable CORS (be careful) // 新增以下参数,指定短路径的临时数据目录,路径可自定义 '--user-data-dir=/tmp/chrome-puppeteer' ], }); // navigate to the Angular page const page = await browser.newPage(); page.goto('http://localhost:4200'); })();
方案2:重置环境变量+清理残留临时文件
该问题本质是你的Node进程继承了被Shortcuts修改过的TMPDIR环境变量,残留的缓存目录也会触发路径读取:
- 先在脚本开头重置临时目录环境变量:
// 放在脚本最顶部,早于puppeteer.launch执行 process.env.TMPDIR = '/tmp/';
- 清理残留的Shortcuts相关Chromium缓存目录,终端执行以下命令:
rm -rf /var/folders/*/*/T/com.apple.shortcuts.mac-helper/.org.chromium.Chromium.*
方案3:升级Puppeteer到最新稳定版
v19.0.0及以上版本的Puppeteer已经针对macOS的套接字路径长度限制做了适配,会自动生成更短的临时目录路径,无需额外配置即可解决该问题,执行升级命令即可:
npm install puppeteer@latest # 或者用yarn yarn add puppeteer@latest
内容的提问来源于stack exchange,提问作者mevens
相关产品推荐
相关产品推荐

