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

Laravel调用Puppeteer遇Chrome未找到错误,已安装仍报错求解决

问题描述

我有一个使用Puppeteer的NodeJS脚本,由PHP框架Laravel启动。本地环境运行正常,因Laravel以当前用户账户执行,脚本也沿用该账户。但服务器上Laravel以Apache账户(www-data)运行,JS脚本同样以此账户执行。当脚本调用Puppeteer时出现如下错误:

Error: Could not find Chrome (ver. 130.0.6723.58). This can occur if either
 1. you did not perform an installation before running the script (e.g. `npx puppeteer browsers install chrome`) or
 2. your cache path is incorrectly configured (which is: /var/www/.cache/puppeteer).
For (2), check out our guide on configuring puppeteer at https://pptr.dev/guides/configuration.
    at ChromeLauncher.resolveExecutablePath (file:///home/admin/node-twitterbot/node_modules/puppeteer-core/lib/esm/puppeteer/node/BrowserLauncher.js:266:27)
    at ChromeLauncher.executablePath (file:///home/admin/node-twitterbot/node_modules/puppeteer-core/lib/esm/puppeteer/node/ChromeLauncher.js:202:25)
    at ChromeLauncher.computeLaunchArguments (file:///home/admin/node-twitterbot/node_modules/puppeteer-core/lib/esm/puppeteer/node/ChromeLauncher.js:83:37)

我已执行命令:

sudo -u www-data npx puppeteer browsers install chrome chromium -- path=/var/www/.cache/puppeteer

且/var/www/.cache/puppeteer文件夹中已存在Chrome和Chromium,但仍抛出该异常,求解决思路。

解决思路
  • 检查文件权限:确保/var/www/.cache/puppeteer及其子文件、文件夹对www-data账户有完整的读、执行权限。执行以下命令:
    sudo chown -R www-data:www-data /var/www/.cache/puppeteer
    sudo chmod -R 755 /var/www/.cache/puppeteer
    
  • 直接指定Chrome可执行路径:在Puppeteer启动代码中明确指定已安装的Chrome路径,绕过自动查找逻辑。示例代码:
    const puppeteer = require('puppeteer-core');
    (async () => {
      const browser = await puppeteer.launch({
        executablePath: '/var/www/.cache/puppeteer/chrome/linux-130.0.6723.58/chrome',
        args: ['--no-sandbox', '--disable-setuid-sandbox']
      });
      // 业务逻辑代码
      await browser.close();
    })();
    
    注意替换路径中的具体版本号为你实际安装的版本。
  • 配置Puppeteer缓存路径:通过环境变量或代码明确指定缓存目录,确保Puppeteer能找到浏览器:
    • 环境变量方式:Laravel启动Node脚本前,设置环境变量:
      PUPPETEER_CACHE_DIR=/var/www/.cache/puppeteer
      
    • 代码配置方式:在Node脚本开头添加:
      const { setCacheDir } = require('puppeteer');
      setCacheDir('/var/www/.cache/puppeteer');
      
  • 重新安装依赖:以www-data账户进入项目目录,重新安装Puppeteer(若用puppeteer-core则安装puppeteer),确保依赖与浏览器版本匹配:
    sudo -u www-data cd /home/admin/node-twitterbot && npm install puppeteer
    
  • 验证浏览器版本匹配:检查错误提示的Chrome版本(130.0.6723.58)是否与缓存目录中的版本一致。若不一致,重新安装对应版本:
    sudo -u www-data npx puppeteer browsers install chrome@130.0.6723.58 --path=/var/www/.cache/puppeteer
    

内容的提问来源于stack exchange,提问作者Jean François Manatane

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 19:03:17