NodeJs19+NPM8.19.3环境下Puppeteer安装路径异常及修改咨询
Puppeteer全局安装路径问题解答
为什么Chrome会出现在/root/.cache目录?
这是Puppeteer的版本变更导致的行为调整。从v19.x版本开始,Puppeteer不再将Chrome二进制文件打包到全局node_modules目录,而是默认存储到用户缓存目录(如root用户的/root/.cache/puppeteer)。这个改动是为了优化磁盘占用——多个依赖不同版本Puppeteer的项目可以共享对应版本的Chrome缓存,避免重复下载。
如何将Chrome指定安装到/usr/lib/node_modules目录?
npm的prefix配置仅控制Node包本身的安装位置,无法影响Puppeteer单独下载的Chrome二进制文件。你需要通过Puppeteer专属的环境变量来指定浏览器存储路径:
临时生效(仅当前终端会话):
- 设置环境变量指定Chrome存储路径:
export PUPPETEER_DOWNLOAD_PATH=/usr/lib/node_modules/puppeteer/.local-chromium - 执行全局安装命令:
npm install -g puppeteer --unsafe-perm=true
- 设置环境变量指定Chrome存储路径:
永久生效(所有终端会话):
将上述export命令添加到root用户的~/.bashrc或系统级的/etc/profile文件中,保存后执行source ~/.bashrc或重启终端即可。
注意事项
- Puppeteer的核心包代码仍会安装到npm全局prefix对应的目录(默认就是
/usr/lib/node_modules),只是Chrome二进制文件会被放到你指定的路径下。 - 确保目标目录有足够的读写权限,root用户执行安装通常无需额外权限,但如果后续用普通用户运行Puppeteer,需给该目录设置相应权限。
验证安装结果
安装完成后,可通过以下命令确认Chrome的实际路径:
node -e "const puppeteer = require('puppeteer'); console.log(puppeteer.executablePath())"
输出应指向你指定的/usr/lib/node_modules下的Chrome路径。
内容的提问来源于stack exchange,提问作者user2972081
相关产品推荐
相关产品推荐

