Laravel 8升级至9后触发LogicException:需先调用in()或append()方法
Laravel 9 + Orchid 13 升级后 Finder 异常修复方案
异常根源
Orchid 13 版本对内部 Finder 类的使用逻辑做了严格校验,要求必须先通过 in() 指定搜索目录,或用 append() 添加目标目录后,才能对 Finder 实例进行遍历操作。升级前的版本可能允许隐式使用默认目录,升级后该逻辑被收紧,导致未符合要求的代码抛出此异常。
修复步骤
检查自定义代码中 Finder 的使用:
若项目中存在自定义继承 Orchid Finder 类的代码,或直接实例化使用Finder的场景,必须在遍历(如foreach循环、调用all()方法)前添加目录指定操作:// 示例:指定单个目录 $finder = new \Orchid\Support\Finder(); $files = $finder->in(resource_path('views'))->all(); // 示例:添加多个目录 $finder->append(resource_path('views'))->append(base_path('routes'));核查 Orchid 配置文件:
打开config/platform.php,检查所有涉及资源路径的配置项,确保每个依赖 Finder 的配置都明确指定了有效目录,避免空目录或未配置的情况。清理项目缓存:
升级后执行以下命令清除缓存,避免旧配置或编译文件残留导致的问题:php artisan config:clear php artisan cache:clear php artisan view:clear适配第三方扩展:
若项目使用了基于 Orchid 的第三方扩展,确认扩展是否已适配 Orchid 13 版本。未适配的情况下,需更新扩展包,或临时修改扩展代码中 Finder 的调用逻辑,补充in()/append()方法调用。
内容的提问来源于stack exchange,提问作者wpdeveloper
相关产品推荐
相关产品推荐

