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

Laravel中使用Spatie Browsershot生成PDF遇ENOENT错误求助

问题:Spatie Browsershot生成PDF时出现ENOENT路径错误

错误信息

[Error: ENOENT: no such file or directory, mkdtemp 'undefined\temp\puppeteer_dev_chrome_profile-XXXXXX'] { errno: -4058, code: 'ENOENT', syscall: 'mkdtemp', path: 'undefined\\temp\\puppeteer_dev_chrome_profile-XXXXXX' }

触发代码

$htmlContent = view('org.org')->render();
Browsershot::html($htmlContent)
    ->setNodeBinary('C:\\Program Files\\nodejs\\node.exe')
    ->setNpmBinary('C:\\Program Files\\nodejs\\node.exe')
    ->save('example.pdf');

解决方案

  • 修正NPM路径:你的setNpmBinary指向了node.exe,这是错误的,NPM的可执行文件应为npm.cmd,修改后:

    ->setNpmBinary('C:\\Program Files\\nodejs\\npm.cmd')
    
  • 指定临时目录:错误中的undefined说明Puppeteer无法读取系统TEMP环境变量,或变量指向的路径不存在。可手动在代码中指定临时目录:

    $htmlContent = view('org.org')->render();
    Browsershot::html($htmlContent)
        ->setNodeBinary('C:\\Program Files\\nodejs\\node.exe')
        ->setNpmBinary('C:\\Program Files\\nodejs\\npm.cmd')
        ->setTempPath(storage_path('temp')) // 使用项目storage目录下的temp文件夹
        ->save('example.pdf');
    

    确保storage/temp目录已创建,且PHP运行进程具备该目录的读写权限。

  • 检查系统环境变量:Windows系统下,确认TEMP和TMP环境变量已正确配置,指向存在的路径(如C:\Windows\Temp),且运行PHP的进程有权限访问该路径。

  • 升级依赖版本:尝试将Spatie Browsershot和Puppeteer升级至最新稳定版,部分旧版本存在环境变量读取的兼容性问题。

内容的提问来源于stack exchange,提问作者Orwa Ra

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 16:39:56