Laravel自定义包报错:MyPackageServiceProvider未定义isDeferred()方法
解决Laravel自定义包服务提供者报错:Call to undefined method Serahk\MyPackage\MyPackageServiceProvider::isDeferred()
报错的核心原因是你的自定义服务提供者没有继承Laravel框架提供的ServiceProvider基类,isDeferred()方法是该基类的内置方法,框架在加载服务提供者时会调用它,你的类未继承所以找不到该方法。
修复步骤:
- 修改服务提供者代码,让它继承
Illuminate\Support\ServiceProvider:
<?php namespace Serahk\MyPackage; use Illuminate\Support\ServiceProvider; class MyPackageServiceProvider extends ServiceProvider { public function boot() { $this->loadRoutesFrom(__DIR__.'/route.php'); $this->loadViewsFrom(__DIR__.'/views', 'serahk/mypackage'); } public function register() { } }
- 确保你的自定义包的
composer.json中正确配置了服务提供者(如果还没添加的话):
{ "name": "serahk/mypackage", "type": "library", "autoload": { "psr-4": { "Serahk\\MyPackage\\": "src/" } }, "extra": { "laravel": { "providers": [ "Serahk\\MyPackage\\MyPackageServiceProvider" ] } } }
- 回到主项目执行以下命令:
composer dump-autoload composer update
之前执行清除vendor、composer.lock重新安装无效,是因为问题根源在服务提供者类的结构错误,而非依赖缓存或安装问题,修正继承关系后即可解决。
内容的提问来源于stack exchange,提问作者serahk
相关产品推荐
相关产品推荐

