Webman使用Blade模板引擎,線上偶發(fā)性No hint path defined for [__components].
本地開發(fā)機(jī)從未出現(xiàn)過(guò),有遇到過(guò)這種情況的么?
本地開發(fā)機(jī):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
每次遇到這個(gè)問(wèn)題就得重啟webman才會(huì)恢復(fù),但是一兩個(gè)小時(shí),又會(huì)觸發(fā)這個(gè)問(wèn)題。
還是偶發(fā)性出現(xiàn)這個(gè)問(wèn)題。
每次出現(xiàn)這個(gè)問(wèn)題都得重啟webman才能解決。
感覺是Bladeview生成緩存的問(wèn)題 嘗試一下在出現(xiàn)這個(gè)問(wèn)題的時(shí)候 清理一下 Bladeview 產(chǎn)生的緩存文件試一下
你因該是使用字符串視圖,然后走了清空模式。之前遇到過(guò)。需要再調(diào)用視圖前使用 \Illuminate\View\Component::flushCache();即可解決。
感謝老哥回答,請(qǐng)問(wèn)走了清空模式是什么意思,我發(fā)現(xiàn)會(huì)出現(xiàn)這個(gè)問(wèn)題的模板都是使用了Blade的組件才會(huì)偶發(fā)性報(bào)錯(cuò)No hint path defined for [__components].
我就是正常的使用webman視圖,然后采用的Blade模板引擎,使用框架提供的view()方法渲染。
沒有使用組件的模板從不會(huì)報(bào)這個(gè)錯(cuò)誤,使用了Blade的組件就會(huì)報(bào)錯(cuò)。
例如:<x-Test>
我之前是因?yàn)樽吡俗址秩荆缓髣h除渲染后的視圖,你檢查一下,看看有沒有直接用blade渲染字符串的,例如 Blade::render('{{ $a }}', ['a' => 1] , true); 類似這樣的,直接渲染,不走視圖文件的。我是在laravel下出現(xiàn)過(guò)的,webman的沒試過(guò),需要自己排查,看laravel底層邏輯就是因?yàn)?Illuminate\View\Compilers\BladeCompiler 行 322 的 unlink($view->getPath()); 導(dǎo)致的。你用組件的可能也和這個(gè)有關(guān)的,需要自己排查下
laravel view底層的代碼,帶有__components的,只有一個(gè)地方是注冊(cè)了的,createBladeViewFromString,這個(gè)方法有緩存的時(shí)候是不執(zhí)行的,這樣就會(huì)導(dǎo)致渲染__components命名空間時(shí)候沒找到,需要自己排查的