Windows上的Laravel Spatie浏览器快照:在控制台中工作,不在浏览器中工作

ktca8awb  于 2023-03-09  发布在  Windows
关注(0)|答案(1)|浏览(168)

我不能把我的头绕在下面的问题上。我有一个Windows 11上的开发环境。
我试图让Spatie的Browsershot在Windows上工作,但一直收到关于节点未被识别为内部或外部程序的错误。
然而,当我在CMD-shell中的任何位置运行node -v时,我每次都会看到版本号。所以,我猜路径变量设置正确。我使用最新版本的Laravel和Browsershot。
当我通过“php artisan tinker”执行这个简单的Tinker脚本时,我确实看到了所需的html:

use Spatie\Browsershot\Browsershot;
$a = new Browsershot();
$a->url('https://www.ad.nl')->bodyHtml();

当我通过浏览器(使用routes/web.php)运行这个程序时,我收到错误:

Route::get('/a', function () {
  $a = new Browsershot();
  $a->url('https://www.ad.nl')->bodyHtml();
});

错误:

2022-12-02 11:01:48] local.ERROR: The command "node ^"C:^\dev^\projects^\test^\vendor^\spatie^\browsershot^\src/../bin/browser.js^" ^"^{^\^"url^\^":^\^"https:^\/^\/www.ad.nl^\^",^\^"action^\^":^\^"content^\^",^\^"options^\^":^{^\^"args^\^":^[^],^\^"viewport^\^":^{^\^"width^\^":800,^\^"height^\^":600^}^}^}^"" failed.

Exit Code: 1(General error)

Working directory: C:\dev\projects\test\public

Output:
================

Error Output:
================
'node' is not recognized as an internal or external command,
operable program or batch file.
 {"exception":"[object] (Symfony\\Component\\Process\\Exception\\ProcessFailedException(code: 0): The command \"node ^\"C:^\\dev^\\projects^\\test^\\vendor^\\spatie^\\browsershot^\\src/../bin/browser.js^\" ^\"^{^\\^\"url^\\^\":^\\^\"https:^\\/^\\/www.ad.nl^\\^\",^\\^\"action^\\^\":^\\^\"content^\\^\",^\\^\"options^\\^\":^{^\\^\"args^\\^\":^[^],^\\^\"viewport^\\^\":^{^\\^\"width^\\^\":800,^\\^\"height^\\^\":600^}^}^}^\"\" failed.

Exit Code: 1(General error)

Working directory: C:\\dev\\projects\\test\\public

Output:
================

Error Output:
================
'node' is not recognized as an internal or external command,

operable program or batch file.

有人知道问题出在哪里吗?

mtb9vblg

mtb9vblg1#

对于问题"'node'未被识别为内部或外部命令",您可以显式设置节点路径。
https://spatie.be/docs/browsershot/v2/requirements#content-custom-node-and-npm-binaries
示例:
浏览器快照::网址("https://www.example.com")-〉设置节点二进制("路径%~dp0;google.com%路径%;');%PATH%;')->setNpmBinary('PATH %~dp0;%PATH%;');
确保您的节点在PATH中注册。

相关问题