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

Laravel使用Spatie/Browsershot报错:npm&node未找到(Docker环境)

解决方案:Docker环境下Spatie/Browsershot的node/npm找不到及Puppeteer漏洞问题

一、解决node/npm未找到的问题

1. 确认Node.js的实际路径

在Laradock的workspace容器内执行命令,获取node和npm的真实路径:

which node
which npm

你会得到类似输出:

/home/laradock/.nvm/versions/node/v20.0.0/bin/node
/home/laradock/.nvm/versions/node/v20.0.0/bin/npm

你之前指定的/usr/bin/node是错误路径,这是核心问题所在。

2. 正确配置Browsershot的Node路径

修改代码,使用实际获取到的node/npm路径,同时注意Docker环境必须添加noSandbox参数:

use Spatie\Browsershot\Browsershot;

Browsershot::html('testing')
    ->setNodeBinary('/home/laradock/.nvm/versions/node/v20.0.0/bin/node')
    ->setNpmBinary('/home/laradock/.nvm/versions/node/v20.0.0/bin/npm')
    ->noSandbox()
    ->save(public_path('assets/pdfs/example.pdf'));

推荐用public_path()代替硬编码的/public/,避免因容器路径映射导致的错误。

3. 确保PHP进程能访问Node路径

如果是通过Laradock的php-fpm容器而非workspace执行代码,需额外配置:

  • 编辑laradock/php-fpm/Dockerfile,添加Node路径到环境变量:
    ENV PATH="/home/laradock/.nvm/versions/node/v20.0.0/bin:${PATH}"
    
  • 重新构建并启动php-fpm容器:
    docker-compose build php-fpm
    docker-compose up -d php-fpm
    

4. 验证Node可访问性

在Laravel路由/控制器中执行以下代码,测试PHP进程能否调用Node:

$output = shell_exec('which node 2>&1');
dd($output);

输出正确的Node路径则说明环境配置生效。

二、解决Puppeteer依赖弃用及漏洞问题

1. 用--legacy-peer-deps安装Puppeteer

重新安装时忽略peer依赖冲突,解决大部分弃用提示:

npm install puppeteer --legacy-peer-deps

2. 锁定稳定版本的Puppeteer

选择维护状态良好的稳定版本,减少漏洞数量:

npm install puppeteer@21.7.0 --legacy-peer-deps

新版本会修复已知高危漏洞,尽量避免使用过旧版本。

3. 忽略非核心漏洞

部分漏洞属于开发依赖或非功能性依赖,不会影响PDF生成的核心功能。执行npm audit查看漏洞详情:

  • 若漏洞位于devDependencies中,可直接忽略
  • 低风险漏洞无需强制修复,不影响生产环境

4. 用Puppeteer官方镜像隔离环境(可选)

不想在Laradock容器内维护Node环境的话,可以单独启动Puppeteer服务,让Browsershot远程调用:

  • 启动Puppeteer容器:
    docker run -d --name puppeteer-chrome -p 3000:3000 ghcr.io/puppeteer/puppeteer:latest
    
  • 修改Browsershot代码使用远程Chrome:
    Browsershot::html('testing')
        ->setRemoteInstance('http://puppeteer-chrome:3000')
        ->save(public_path('assets/pdfs/example.pdf'));
    

内容的提问来源于stack exchange,提问作者Paul Godard

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 06:54:54