Laravel 在生产环境中“无法找到组件的类或视图”

Bor*_*ign 8 php laravel laravel-blade laravel-livewire

我在本地的 Mac 上开发。大苏尔的最新版本。

今天,我通过 Forge 通过 Ubuntu 服务器将我的应用程序部署到生产环境中,但遇到了一个我以前从未见过的错误,并且无法在网上找到答案。我可以看到很多人在抱怨它,但是任何人在其他答案中所说的都是指向没有解决方案甚至没有解释的问题的链接,所以这就是我提出一个新问题的原因。

确切的错误是这样的; Unable to locate a class or view for component [layouts.base]. (View: /home/forge/default/releases/20201204084441/resources/views/layouts/app.blade.php)

在我的应用程序中,我有; app\View\Components\Layouts\App.php 看起来像这样;

<?php

namespace App\View\Components\Layouts;

use Illuminate\View\Component;

class App extends Component
{
    public function render()
    {
        return view('layouts.app');
    }
}
Run Code Online (Sandbox Code Playgroud)

那我也有; resources\views\layouts\app.blade.php

<x-layouts.base>
<!-- contents -->
</x-layouts.base>
Run Code Online (Sandbox Code Playgroud)

(也几乎相同的基础)

在 Mac 上完美运行。一旦我在 Ubuntu 上部署它,我就会收到上面的错误,即“无法找到具有这些名称的类或视图”。

有人可以指导我如何解决这个问题,因为到目前为止我完全不知道,尽管知道区分大小写可能是其他问题的问题,但我找不到任何实际的解决方案或方法来解决这个。

Pat*_*ros 9

我有同样的问题。感谢您的问题,我可以找到解决方法:D

就我而言,为了更好的组织,我在另一个文件夹中创建了一个组件:

$ php artisan make:component Tutorial/channelName/Alert
Run Code Online (Sandbox Code Playgroud)

所以它在以下目录中创建了视图组件:

views/components/tutorial/channel-name/alert.blade.php

现在,要调用您的组件,您可以这样做:

<x-tutorial.channelName.alert />
Run Code Online (Sandbox Code Playgroud)

差不多就是这样。


Eri*_*ama 5

我遇到了同样的问题,我通过交叉检查我的文件夹名称来修复它。

请注意,文件夹名称应该是components而不是component

请参阅屏幕截图以获得更好的想法。

在此输入图像描述

例子:

如果您遵循惯例,还有一件事是,如果您有一个文件

views/components/admin/side-menu/side.blade.php

您可以将您的组件称为:

<x-admin.side-menu.side></x-admin.side-menu.side>

解释:

x-刀片语法中使用的基本上告诉您正在从文件夹中选择文件夹或文件Components

使用的(.点)适用于您挖掘到要使用的刀片文件的每个目录。