0

我正在使用 Laravel 框架开发一个 Web 应用程序。我需要在我的应用程序中将网页生成为 pdf/ 图像。我正在为它使用 PHP 浏览器拍摄 spatie 包,https://github.com/spatie/browsershot。我使用以下代码创建了一个测试函数来生成图像。

\Spatie\Browsershot\Browsershot::url("https://www.google.com/")->save(public_path() . '/example.png');

当我运行该函数时,出现以下错误。

The command "PATH=$PATH:/usr/local/bin NODE_PATH=`npm root -g` node '/var/www/vendor/spatie/browsershot/src/../bin/browser.js' '{"url":"https:\/\/www.google.com\/","action":"screenshot","options":{"type":"png","path":"\/var\/www\/public\/example.png","args":[],"viewport":{"width":800,"height":600}}}'" failed. Exit Code: 127(Command not found) Working directory: /var/www/public Output: ================ Error Output: ================ sh: 1: npm: not found sh: 1: node: not found

我正在为我的项目使用 Docker 和 Docker Compose。我的代码有什么问题?

4

1 回答 1

0

您需要告诉 BrowserShot 指向 node 和 npm 的安装二进制文件。
以这种方式修改您的代码

\Spatie\Browsershot\Browsershot::url("https://www.google.com/")
    ->setNodeBinary('/usr/bin/node')
    ->setNpmBinary('/usr/bin/npm')
    ->save(public_path() . '/example.png');

确保相应地修改“/usr/bin/node”和“/usr/bin/npm”。

于 2021-06-24T08:04:50.657 回答