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

生产环境中Spatie Laravel-PDF(依赖Browsershot)生成PDF失败的排查求助

生产环境中Spatie Laravel-PDF(依赖Browsershot)生成PDF失败的排查求助

我在项目中使用 Spatie 的 Laravel-PDF 包生成 PDF,它底层依赖 Browsershot 实现功能。本地测试一切正常,但部署到生产服务器后就报错,而且错误信息几乎没有提供有用的排查线索,实在卡壳了。

先说明目前确认的正常项:

  • 临时生成的 index.html 文件内容完全符合预期,没有缺失
  • 已经将 Node.js 的路径添加到系统环境变量中,路径配置没问题

以下是我遇到的具体错误输出:

The command "node C:\inetpub\wwwroot\myproject\vendor\spatie\browsershot\src/../bin/browser.cjs "{\"url\":\"file://C:\Windows\TEMP\607378296-0455840001752189861\index.html\",\"action\":\"pdf\",\"options\":{\"args\":[],\"viewport\":{\"width\":800,\"height\":600},\"displayHeaderFooter\":false,\"margin\":{\"top\":\"0.25in\",\"right\":\"0.25in\",\"bottom\":\"0.25in\",\"left\":\"0.25in\"},\"format\":\"letter\",\"landscape\":true,\"printBackground\":true}}" failed. Exit Code: 1(General error)
Working directory: C:\inetpub\wwwroot\myproject\public
Output: ================
Error Output: ================

我的控制器生成PDF的代码如下:

<?php

namespace App\Http\Controllers;

use Spatie\LaravelPdf\Enums\Format;
use Spatie\LaravelPdf\Enums\Unit;
use Spatie\LaravelPdf\Facades\Pdf;

class ExportController extends Controller
{
    public function pdf()
    {
        $pdf = Pdf::view('table-pdf');

        return $pdf->format(Format::Letter)
            ->margins(0.25, 0.25, 0.25, 0.25, Unit::Inch)
            ->landscape()
            ->name("myfile.pdf");
    }
}

我已经尝试过这些排查手段,但都没有解决问题:

  • 通过 withBrowserShot() 链式调用 setNodeBinary() 手动指定 Node 二进制文件路径,无效
  • 调用 noSandbox() 关闭沙箱模式,没有改善
  • 卸载并重新安装 Puppeteer,问题依旧

有没有大佬能指点下,我应该从哪些方向继续排查?实在是找不到突破口了...

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.07 10:49:35