未为一个模块(Laravel模块)加载服务提供程序

jchrr9hc  于 2022-12-19  发布在  其他
关注(0)|答案(1)|浏览(155)

我遇到了一个奇怪的问题。我正在使用Nwidart Laravel模块包。我有很多模块,一切都按预期工作:服务提供商为每个模块注册路由等。但突然,我失去了与一个模块的联系-我所有的端点都没有注册-我只看到404错误页面。首先,我检查了php artisan route:list-缺失的API路由在那里。然后我检查了php artisan module:list-缺失的模块已加载并启用。下一步:检查模块目录中的module.json文件:看起来不错,模块服务提供程序存在于providers数组中。我做了一些调试,发现此提供程序不再加载。我正在尝试找出问题所在,但我没有主意。
更新:
运行php artisan route:cache命令后,丢失的路由现在可用。

s8vozzvw

s8vozzvw1#

我终于想通了,我在这里描述一下我的案例;我希望它能在未来对某人有所帮助。有两件事要对我的问题负责:bootstrap/cache和DeferrableProvider。在某个时候,我为我的模块使用了DeferrableProvider,但我甚至不知道它不起作用,因为此模块的配置被缓存为bootstrap/cache目录中的清单文件(XYZ_module. php)。在我完成composer更新并清除缓存之前,一直加载有效的配置。错误的配置保存在缓存中,导致模块故障。我不得不从提供程序类中删除DeferrableProvider接口来修复它($deferprovides方法也是如此)。下一步是清除该高速缓存/配置等,然后我回到业务中!
更新:清除cache/config可能不会从bootstrap/cache目录中删除模块清单文件。在这种情况下,需要手动删除文件。

相关问题