首页 > 解决方案 > 致命错误:未捕获的 ArgumentCountError:函数 Spatie\Ssr\Engines\V8::__construct() 的参数太少

问题描述

我想为我的 vue 应用程序使用服务器端渲染,我找到了这个库

我遵循了有关如何设置我的应用程序以能够使用服务器端渲染的教程,但是当我将其部署到服务器并尝试查看页面时,我收到了这个错误

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

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

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

目前,我的代码与库的 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();

?>

有没有办法解决这个问题?

标签: phpvue.jsserver-side-rendering

解决方案


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

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

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

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

所以 V8 类中的构造函数需要一个 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


推荐阅读