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

bkhjykvo  于 2022-11-26  发布在  其他
关注(0)|答案(9)|浏览(150)

我在本地的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');
    }
}

后来我也有了; resources\views\layouts\app.blade.php

<x-layouts.base>
<!-- contents -->
</x-layouts.base>

(Also基本相同)
在Mac上运行完美。只要我在Ubuntu上部署它,我就会收到上面的错误,即它“无法找到具有这些名称的类或视图”。
有人能请指示我如何去解决这个问题,因为到目前为止,我完全不知道,尽管知道大小写敏感性可能是问题的其他问题,我找不到任何实际的解决方案或方法来解决这个问题。

ajsxfq5m

ajsxfq5m1#

我也有同样的问题。多亏了你的问题,我才能找到解决它的方法:D
在我的例子中,为了更好地组织,我在另一个文件夹中创建了一个组件:

$ php artisan make:component Tutorial/channelName/Alert

因此,它在以下目录中创建了视图组件:
views/components/tutorial/channel-name/alert.blade.php
现在,要调用组件,请按以下方式操作:

<x-tutorial.channelName.alert />

差不多就是这样。

2exbekwf

2exbekwf2#

我也遇到了同样的问题,我通过交叉检查我的文件夹名称来修复它。
请注意,文件夹名称应为components,而不是component

请参阅屏幕截图以获得更好的建议。

范例:

如果您遵循约定,还有一件事是,如果您在
views/components/admin/side-menu/side.blade.php
您可以将组件调用为:
<x-admin.side-menu.side></x-admin.side-menu.side>

说明:

blade语法中使用的x-基本上表示您正在从Components文件夹中选择文件夹或文件。
使用的.(点)是针对您挖掘到要使用的blade文件的每个目录。

ttp71kqs

ttp71kqs3#

在我的Case中,我没有在Component中提供命名空间,它在提供命名空间后解决了。

h79rfbju

h79rfbju4#

我也遇到了同样的问题,但我意识到错误是组件的类名。我没有大写类名,当我大写类名时,我就不再出现错误,我的项目运行得很好。
请尝试大写与错误消息中的组件匹配的类名。

ffdz8vbo

ffdz8vbo5#

当我是一个初学者,我得到了同样的错误,但在我的情况下,有一切都好,但有一个小的语法错误<x- card />有一个差距之间的卡和破折号这是不正确的,所以应该没有空格之间的破折号和卡<x-card />所以尝试一次,也许这是你的问题。

gzszwxb4

gzszwxb46#

我遇到了同样的问题--解决办法就是改变:<x-forms.inputradio>至:<x-forms.inputRadio>只是字母大小..

px9o7tmv

px9o7tmv7#

上述问题的问题区分大小写
对于本地看起来像它的大小写不敏感的原因,它的作品为本地完成,但在服务中断。
如果您在任何新文件夹中创建了新组件(即

$ php artisan make:component Widgets/CustomAlert

它将为组件创建两个文件,class和blade文件。class文件

app\Views\Components\\CustomAlert.php

刀片锉

resources\views\components\widgets.custom-alert.blade.php

你可以用类或blade文件来呈现组件。2对于类,请确保文件夹,类名区分大小写。

<x-Widgets.CustomAlert />

要呈现Blade文件,应该

<x-widgets.custom-alert />

注意如果您手动重新定位文件,请确保类文件中的命名空间、文件名和组件调用语法应匹配(区分大小写)

示例仅供参考,请尝试将语法和名称与您文件、文件夹进行比较。
我希望这会有帮助:)

oipij1gg

oipij1gg8#

在我的例子中,我创建了一个类AppLogo,并将blade生成为app-logo.blade.php
然而,在我的视图文件中,我将组件引用为x-applogo,这在本地工作,但在生产(实时托管服务器)中,我得到了这个错误。
解决方案:我将blade/view文件中出现的所有x-applogo更改为x-app-logo
这在开发和生产中都有效。
希望这对外面的人有帮助。

b5buobof

b5buobof9#

这种情况发生在服务器上。尽量不要使组件在文件夹内。。我在服务器上遇到了同样的问题,但没有得到任何解决方案,唯一有效的解决方案是将您的组件保持在任何子文件夹之外

相关问题