【未解决】Blade模板引擎,线上偶发性No hint path

wangerwu

Webman使用Blade模板引擎,线上偶发性No hint path defined for [__components].

本地开发机从未出现过,有遇到过这种情况的么?

本地开发机:Windows11 PHP8.3

线上:Debian12.5 64位 PHP8.3

线上线下均未启用 opcache

Webman 1.6
webman/blade 1.55

No hint path defined for [__components]. 

Error Details
File: /www/wwwroot/webman/***/vendor/illuminate/view/FileViewFinder.php
Line: 112
Exception: lluminate\View\ViewException
Code: 0
Mesage: No hint path defined for [__components]. (View: /www/wwwroot/***/resources/views/layouts/dashboard/base.blade.php) (View: /www/wwwroot/***/resources/views/layouts/dashboard/base.blade.php

每次遇到这个问题就得重启webman才会恢复,但是一两个小时,又会触发这个问题。


还是偶发性出现这个问题。

每次出现这个问题都得重启webman才能解决。

406 5 0
5个回答

walkor 打赏

没遇到过这个问题

  • 暂无评论
SillyDog

感觉是Bladeview生成缓存的问题 尝试一下在出现这个问题的时候 清理一下 Bladeview 产生的缓存文件试一下

  • wangerwu 2024-11-22

    尝试过,这问题折磨好几天了。

  • wangerwu 2024-11-22

    不知道跟Opcache有关,刚开始线上是启用的,目前禁用了,再观察观察。

  • SillyDog 2024-11-22

    okok 如果还有问题的话 可以尝试搞个复现项目 可以一起看下

  • wangerwu 28天前

    没法百分百复现,线上偶发性复现,被这个问题搞的烦死了。

  • SillyDog 28天前

    知道那个页面 出现的问题嘛?

ab0029

你因该是使用字符串视图,然后走了清空模式。之前遇到过。需要再调用视图前使用 \Illuminate\View\Component::flushCache();即可解决。

  • wangerwu 23天前

    感谢老哥回答,请问走了清空模式是什么意思,我发现会出现这个问题的模板都是使用了Blade的组件才会偶发性报错No hint path defined for [__components].

    我就是正常的使用webman视图,然后采用的Blade模板引擎,使用框架提供的view()方法渲染。
    没有使用组件的模板从不会报这个错误,使用了Blade的组件就会报错。
    例如:<x-Test>

  • ab0029 19天前

    我之前是因为走了字符串渲染,然后删除渲染后的视图,你检查一下,看看有没有直接用blade渲染字符串的,例如 Blade::render('{{ $a }}', ['a' => 1] , true); 类似这样的,直接渲染,不走视图文件的。我是在laravel下出现过的,webman的没试过,需要自己排查,看laravel底层逻辑就是因为 Illuminate\View\Compilers\BladeCompiler 行 322 的 unlink($view->getPath()); 导致的。你用组件的可能也和这个有关的,需要自己排查下

  • ab0029 19天前

    查了下,你哪个应该是命名空间没有注册到视图里面去吧,用<x-Test>需要注册组件才可以的。

  • wangerwu 18天前

    没有走字符串渲染。有注册的,它是偶发性(几小时一次)出现,使用的是webman提供的blade封装。

  • ab0029 17天前

    laravel view底层的代码,带有__components的,只有一个地方是注册了的,createBladeViewFromString,这个方法有缓存的时候是不执行的,这样就会导致渲染__components命名空间时候没找到,需要自己排查的

wangerwu

有遇到这个问题的老哥么?

  • 暂无评论
tanhongbin

webman就没用过渲染的 一直是写接口 渲染都不会写了

  • 暂无评论
×
🔝