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

Windows下Node已安装配置环境变量,Browsershot仍找不到node命令

使用Spatie Browsershot生成PDF时提示'node'未识别的解决方案

问题场景

我尝试使用Spatie Browsershot生成PDF,代码如下:

$html = view('components.pages.student.result.check', [
    'results' => $results, 
    'average' => $average, 
    'student' => $student])->render();

$pdf = Browsershot::html($html)->pdf();

return new Response($pdf, 200, [
    'Content-Type' => 'application/pdf',
    'Content-Disposition' => 'inline; filename="result.pdf"'
]);

但持续收到如下错误:

执行命令"node "C:\Users\HP\Documents\GitHub\School_Management_app\vendor\spatie\browsershot\src/../bin/browser.cjs" "{"url":"file://C:\Users\HP\AppData\Local\Temp\1925459280-0381687001715740509\index.html","action":"pdf","options":{"args":[],"viewport":{"width":800,"height":600},"displayHeaderFooter":false}}""失败。退出码:1(常规错误) 工作目录:C:\Users\HP\Documents\GitHub\School_Management_app\public 输出:=============== 错误输出:=============== 'node' 不是内部或外部命令,也不是可运行的程序或批处理文件。

已确认Node.js已安装,系统环境变量已指向node.exe,参考同类问题的解决方法无效,我的错误提示为node未识别,而他人同类错误多为sh未识别。

解决方案

1. 手动指定Node.js的完整路径

由于PHP进程(尤其是Web服务器进程)可能无法读取系统环境变量中的Node路径,可直接在代码中指定node.exe的绝对路径:

$pdf = Browsershot::html($html)
    ->setNodeBinary('C:\Program Files\nodejs\node.exe') // 替换为你的node.exe实际路径
    ->pdf();

2. 重启相关进程

Windows下修改环境变量后,需要重启Web服务器(如Apache、Nginx、IIS)和终端窗口,确保进程加载最新的环境变量配置。如果使用artisan serve,需关闭后重新启动。

3. 检查PHP进程的环境变量

创建一个简单的PHP脚本,查看当前PHP进程能读取到的环境变量:

<?php var_dump(getenv('PATH')); ?>

查看输出内容中是否包含Node.js的安装路径,如果没有,说明PHP进程未获取到系统环境变量,需通过上述两种方法解决。

4. 验证Web服务器用户权限(针对IIS等场景)

如果使用IIS作为Web服务器,需确保应用池的用户有权限访问Node.js的安装目录,且在应用池高级设置中开启「加载用户配置文件」选项,确保环境变量生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 22:47:46