Fatal error: Uncaught ArgumentCountError: Too few arguments to function Spatie\Ssr\Engines\V8::__construct()

Fatal error: Uncaught ArgumentCountError: Too few arguments to function Spatie\Ssr\Engines\V8::__construct()

我想为我的 vue 应用程序使用服务器端渲染,我发现 this library

我已经按照有关如何设置我的应用程序以能够使用服务器端呈现的教程进行操作,但是当我将其部署到服务器并尝试查看页面时,我收到了此错误

Fatal error: Uncaught ArgumentCountError: Too few arguments to function Spatie\Ssr\Engines\V8::__construct(), 0 passed

我有使用 php 的经验,通常可以通过将所需参数传递给 class 构造函数来修复此错误。

在这种情况下,库文档没有提供任何关于 V8 class 构造函数的文档。

目前我的代码与库的 github 回购中提供的片段相同

<?php 
require_once __DIR__."/vendor/autoload.php";

use Spatie\Ssr\Renderer;
use Spatie\Ssr\Engines\V8;

$engine = new V8();

$renderer = new Renderer($engine);

echo $renderer
    ->entry(__DIR__."/js/main.js")
    ->render();

?>

有办法解决这个问题吗?

我建议简短地看一下他们的代码。因为它是开放的,你甚至喜欢它。所以应该没有那么难。

根据他们的单元测试,V8 实例是这样构建的:

$engine = new V8(new V8Js());

看看https://github.com/spatie/server-side-rendering/blob/master/tests/Engines/V8Test.php

所以V8中的构造函数class需要一个V8Js对象。该参数不是可选的,如代码所述:

    public function __construct(V8Js $v8)
    {
        $this->v8 = $v8;
    }

在此处找到:https://github.com/spatie/server-side-rendering/blob/master/src/Engines/V8.php

有趣的是,关于这个主题的问题已经关闭。也许应该重新打开并提供更多详细信息? https://github.com/spatie/server-side-rendering/issues/32