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才能解决。
没遇到过这个问题
感觉是Bladeview生成缓存的问题 尝试一下在出现这个问题的时候 清理一下 Bladeview 产生的缓存文件试一下
尝试过,这问题折磨好几天了。
不知道跟Opcache有关,刚开始线上是启用的,目前禁用了,再观察观察。
okok 如果还有问题的话 可以尝试搞个复现项目 可以一起看下
没法百分百复现,线上偶发性复现,被这个问题搞的烦死了。
知道那个页面 出现的问题嘛?
你因该是使用字符串视图,然后走了清空模式。之前遇到过。需要再调用视图前使用 \Illuminate\View\Component::flushCache();即可解决。
感谢老哥回答,请问走了清空模式是什么意思,我发现会出现这个问题的模板都是使用了Blade的组件才会偶发性报错No hint path defined for [__components].
我就是正常的使用webman视图,然后采用的Blade模板引擎,使用框架提供的view()方法渲染。
没有使用组件的模板从不会报这个错误,使用了Blade的组件就会报错。
例如:<x-Test>
我之前是因为走了字符串渲染,然后删除渲染后的视图,你检查一下,看看有没有直接用blade渲染字符串的,例如 Blade::render('{{ $a }}', ['a' => 1] , true); 类似这样的,直接渲染,不走视图文件的。我是在laravel下出现过的,webman的没试过,需要自己排查,看laravel底层逻辑就是因为 Illuminate\View\Compilers\BladeCompiler 行 322 的 unlink($view->getPath()); 导致的。你用组件的可能也和这个有关的,需要自己排查下
查了下,你哪个应该是命名空间没有注册到视图里面去吧,用<x-Test>需要注册组件才可以的。
没有走字符串渲染。有注册的,它是偶发性(几小时一次)出现,使用的是webman提供的blade封装。
laravel view底层的代码,带有__components的,只有一个地方是注册了的,createBladeViewFromString,这个方法有缓存的时候是不执行的,这样就会导致渲染__components命名空间时候没找到,需要自己排查的
有遇到这个问题的老哥么?
webman就没用过渲染的 一直是写接口 渲染都不会写了