Puppeteer启动报错:无权限访问`/.config/puppeteerrc`求助
Puppeteer 权限错误:尝试读取根目录
/.config/puppeteerrc问题 错误详情
安装或运行Puppeteer时出现以下权限错误:
error /var/tmp/vproj/pvid/node_modules/puppeteer: Command failed. Exit code: 1 Command: node install.mjs Arguments: Directory: /var/tmp/vproj/pvid/node_modules/puppeteer Output: node:fs:591 handleErrorFromBinding(ctx); ^ Error: EACCES: permission denied, open '/.config/puppeteerrc' at Object.openSync (node:fs:591:3) at Object.readFileSync (node:fs:459:35) at #readConfiguration (/var/tmp/vproj/pvid/node_modules/cosmiconfig/dist/ExplorerSync.js:76:39) at search (/var/tmp/vproj/pvid/node_modules/cosmiconfig/dist/ExplorerSync.js:44:63) at emplace (/var/tmp/vproj/pvid/node_modules/cosmiconfig/dist/util.js:12:20) at search (/var/tmp/vproj/pvid/node_modules/cosmiconfig/dist/ExplorerSync.js:64:50) at emplace (/var/tmp/vproj/pvid/node_modules/cosmiconfig/dist/util.js:12:20) at search (/var/tmp/vproj/pvid/node_modules/cosmiconfig/dist/ExplorerSync.js:64:50) at emplace (/var/tmp/vproj/pvid/node_modules/cosmiconfig/dist/util.js:12:20) at search (/var/tmp/vproj/pvid/node_modules/cosmiconfig/dist/ExplorerSync.js:64:50) { errno: -13, syscall: 'open', code: 'EACCES', path: '/.config/puppeteerrc' } Node.js v19.1.0 info Visit https://yarnpkg.com/en/docs/cli/add for documentation about this command.
问题背景
编写多个小型Puppeteer脚本,偶尔触发上述错误。已全局+项目级安装Puppeteer,脚本并非始终在项目目录运行(依赖$PATH指向项目)。所有权限配置正常,从未以root或特权用户身份运行,但Puppeteer默认尝试读取根目录/.config/puppeteerrc,不符合预期逻辑。
尝试过卸载重装Puppeteer、删除package.json改用Yarn,均无法解决问题。
无效的解决方案尝试
- 在
$HOME/.config/puppeteer/puppeteerrc.cjs放置测试配置文件(原位于$HOME/),但Puppeteer未默认读取$HOME路径,该行为未在文档中记录。 - 在脚本内配置缓存目录,代码如下,仍无效:
/** * @type {import("puppeteer").Configuration} */ module.exports = { // Changes the cache location for Puppeteer. cacheDirectory: join(process.env['HOME'], '.config', 'puppeteer'), };
最小复现示例
测试脚本(test.js)
#!/usr/bin/env node const puppeteer = require('puppeteer'); const fs = require('fs').promises; /** * @type {import("puppeteer").Configuration} */ module.exports = { // Changes the cache location for Puppeteer. cacheDirectory: join(process.env['HOME'], '.config','puppeteer'), }; (async () => { const browser = await puppeteer.launch( { headless: false, args: ['--autoplay-policy=no-user-gesture-required'], }); // ... puppeteer code const cookiesString = await fs.readFile('./cookies.json'); const cookies = JSON.parse(cookiesString); await page.setCookie(...cookies); let page = await browser.newPage(); await networkCache.use(page); })();
对应的package.json
{ "name": "puppeteer-download", "version": "1.0.0", "description": "downloads images and videos from a website", "main": "test.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "author": "kenny harrer", "license": "ISC", "dependencies": { "puppeteer-core": "^21.3.6" } }
疑问
当前使用Puppeteer最新版本,该行为是否属于产品Bug?已在GitHub提交相关Issue。
内容的提问来源于stack exchange,提问作者Jim
相关产品推荐
相关产品推荐

