反射异常:Laravel 5.4

Posted

技术标签:

【中文标题】反射异常:Laravel 5.4【英文标题】:ReflectionException: Laravel 5.4 【发布时间】:2018-04-15 01:45:25 【问题描述】:

运行phpunit 时出现此异常。我正在使用 PHPUnit 5.7.23

运行最新的 Laravel 5.4
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的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 5.4 中的异常处理器和HTTP异常处理实例教程

Laravel 流明反射异常

Laravel 验证唯一规则反射类异常

Laravel 5.4 迁移错误 [42501]

laravel artisan 命令列表

Laravel 5.4方法不允许补丁