Macbook Pro M1 MAX环境下Laravel Sail中Puppeteer启动失败求助
解决方案
问题根源是你在本地(Mac ARM64)安装的Puppeteer下载的是适配macOS的Chromium二进制文件,但Laravel Sail的Docker容器是Linux环境,无法识别使用本地的macOS版本Chromium,因此报错找不到对应浏览器。
以下是几种可行的解决办法:
方法1:在Docker容器内安装Puppeteer
- 进入Sail容器:
sail shell - 在容器内执行Puppeteer安装命令(容器会自动下载适配Linux的Chromium版本):
若需要跳过本地已有的安装缓存,可加上强制重新下载参数:npm install puppeteerPUPPETEER_FORCE_DOWNLOAD=true npm install puppeteer
方法2:配置Puppeteer使用容器内的系统级Chromium
- 修改Sail的PHP容器Dockerfile(路径通常为
docker/[php版本]/php/Dockerfile),添加系统级Chromium安装命令:RUN apt-get update && \ apt-get install -y --no-install-recommends chromium-browser && \ rm -rf /var/lib/apt/lists/* - 重新构建Sail容器:
sail build --no-cache - 在代码中指定Puppeteer使用系统级Chromium,或者设置环境变量:
- 代码中配置示例(以Browsershot为例):
Browsershot::url('https://example.com') ->setChromePath('/usr/bin/chromium-browser') ->save('example.pdf'); - 或在
.env文件中添加环境变量:PUPPETEER_EXECUTABLE_PATH=/usr/bin/chromium-browser
- 代码中配置示例(以Browsershot为例):
方法3:调整Puppeteer安装时的环境变量(适合本地+容器兼容场景)
在本地执行安装时,同时指定下载Linux版本的Chromium,配合容器内的路径配置:
PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=false PUPPETEER_TARGET_PLATFORM=linux npm install puppeteer
之后在容器内运行时,通过环境变量指定Puppeteer使用本地下载的Linux版本二进制文件路径(通常在node_modules/puppeteer/.local-chromium/linux-[版本号]/chrome-linux/chrome)。
内容的提问来源于stack exchange,提问作者Andy
相关产品推荐
相关产品推荐

