反射异常:Laravel 5.4
Posted
技术标签:
【中文标题】反射异常:Laravel 5.4【英文标题】:ReflectionException: Laravel 5.4 【发布时间】:2018-04-15 01:45:25 【问题描述】:运行phpunit
时出现此异常。我正在使用 PHPUnit 5.7.23
ReflectionException: Class config does not exist
/home/vagrant/Code/ProcessingHub-App/vendor/laravel/framework/src/Illuminate/Container/Container.php:729
/home/vagrant/Code/ProcessingHub-App/vendor/laravel/framework/src/Illuminate/Container/Container.php:608
/home/vagrant/Code/ProcessingHub-App/vendor/laravel/framework/src/Illuminate/Container/Container.php:575
/home/vagrant/Code/ProcessingHub-App/vendor/laravel/framework/src/Illuminate/Foundation/Application.php:728
/home/vagrant/Code/ProcessingHub-App/vendor/laravel/framework/src/Illuminate/Container/Container.php:1172
/home/vagrant/Code/ProcessingHub-App/vendor/laravel/framework/src/Illuminate/Support/ServiceProvider.php:57
/home/vagrant/Code/ProcessingHub-App/vendor/myvendor/core/src/app/Providers/CoreServiceProvider.php:50
/home/vagrant/Code/ProcessingHub-App/vendor/laravel/framework/src/Illuminate/Foundation/Application.php:574
/home/vagrant/Code/ProcessingHub-App/tests/CreatesApplication.php:18
/home/vagrant/Code/ProcessingHub-App/vendor/laravel/framework/src/Illuminate/Foundation/Testing/TestCase.php:89
/home/vagrant/Code/ProcessingHub-App/vendor/laravel/framework/src/Illuminate/Foundation/Testing/TestCase.php:66
/home/vagrant/Code/ProcessingHub-App/tests/TestCase.php:27
/home/vagrant/Code/ProcessingHub-App/tests/Unit/PassportTest.php:30
如您所见,异常来自 CoreServiceProvider,这是我自己的 ServiceProvider 之一,您可以在这里看到没有什么奇怪的事情发生
/**
* Register any package services.
*
* @return void
*/
public function register()
$this->registerEloquentFactoriesFrom(__DIR__.'/../../database/factories');
$this->mergeConfigFrom(
__DIR__.'/../../config/fields.php', 'fields'
);
fields.php的内容:
return [];
如果我超过 $this->mergeConfigFrom()
它就像一个魅力,但奇怪的是我在多个 ServiceProviders 中这样做并且在这些类中这不是问题。
我真的什么都试过了。
运行中:composer dump-autoload
运行中:php artisan optimize
删除供应商并重新安装所有内容
到处调试,但没有有用的信息
用 laravel 中的基本 testExample 替换 test 也不起作用
我已经用一个新的简单 .env 替换了我的 .env 并没有帮助。
我的问题是:
有谁知道我该如何解决这个问题。
【问题讨论】:
这是否相关:github.com/laravel/framework/issues/8547? 或者检查你的 .env 文件是否有没有 "" 的值!!见here @Devon 我已经研究过这个问题,但它并没有解决我的问题。我正确地使用了Teardown()
和setUp()
,至少我是这么认为的。它以前很好用!看起来它在 $this->mergeConfigFrom()
方法上中断了。
@Maraboc 谢谢,但我已经用新的简单 .env 替换了我的 .env 并没有帮助。
请执行此操作 composer dump-autoload -o
【参考方案1】:
在我使用全新的 Laravel 安装进一步查看 \tests 目录后,我看到了我一直盯着的东西几个小时。
应用程序在引导之前尝试注册 ServiceProvider。很抱歉给您带来麻烦(这不是我的代码)。
namespace Tests;
use Illuminate\Contracts\Console\Kernel;
trait CreatesApplication
/**
* Creates the application.
*
* @return \Illuminate\Foundation\Application
*/
public function createApplication()
$app = require __DIR__.'/../bootstrap/app.php';
$app->make(Kernel::class)->bootstrap();
$app->register(\StepOrange\Core\Providers\CoreServiceProvider::class);
return $app;
【讨论】:
以上是关于反射异常:Laravel 5.4的主要内容,如果未能解决你的问题,请参考以下文章