我正在尝试为使用Laravel编写的项目配置Spatie / Browsershot,但是在完成所有步骤之后,我仍然遇到一个错误:
“节点”未被识别为内部或外部命令,可操作程序或批处理文件
A已安装了最新版本的node和npm,它们都存在于PATH中,并且也可以在cmd上工作。
就像已经写在GitHub上的官方文档中一样,我已经运行:
在我编写的代码中:
use Spatie\Browsershot\Browsershot;
//Method to generate some random id
$unique_id = uniqid('img_');
//The path to the node and npm folders
$path_node = realpath('C:\\"Program Files"\\nodejs');
$path_npm = realpath('C:\\Users\\Hristo\\AppData\\Roaming\\npm');
//The $content is actually a stored HTML code
Browsershot::html("$content")->setScreenshotType('jpeg', 100)
->setNodeBinary($path_node)
->setNpmBinary($path_npm)
->save("$unique_id.jpeg");
程序文件带有双引号,否则Laravel会因为两个单词之间的空格而向我抛出错误。
我不确定路径,是否正确编写了路径? (Windows中的反斜杠问题)
答案 0 :(得分:0)
如果可以运行node -v
并获取节点的版本。然后,该错误是由“程序文件”之间的空格引起的。要解决这个问题:
"C:\Programs\\nodejs\\node.exe"
。注意:此处需要.exe文件这应该能够解决问题。
答案 1 :(得分:0)
这个小片段帮助我解决了这个问题。只要操作系统环境变量指向 node.exe 文件,您就可以将其放入代码中
->setNodeBinary('PATH %~dp0;%PATH%;') //~dp0 : fetches current directory path in windows
希望你能解决