laravel 您访问的页面不存在

p5fdfcr1  于 2022-11-18  发布在  其他
关注(0)|答案(9)|浏览(168)

我最近将一个5.3版本的项目升级到了5.4版本,看起来一切都很好。
今天我开始实现Dusk,但是在运行示例测试时遇到了一个问题

☁  footy-finance [5.4] ⚡ php artisan dusk
PHPUnit 6.0.0 by Sebastian Bergmann and contributors.

E                                                                   1 / 1 (100%)

Time: 162 ms, Memory: 6.00MB

There was 1 error:

1) Tests\Browser\ExampleTest::testBasicExample
ReflectionException: Class config does not exist

/Users/owen/Sites/footy-finance/vendor/laravel/framework/src/Illuminate/Container/Container.php:681
/Users/owen/Sites/footy-finance/vendor/laravel/framework/src/Illuminate/Container/Container.php:565
/Users/owen/Sites/footy-finance/vendor/laravel/framework/src/Illuminate/Foundation/helpers.php:105
/Users/owen/Sites/footy-finance/vendor/laravel/framework/src/Illuminate/Foundation/helpers.php:263
/Users/owen/Sites/footy-finance/vendor/laravel/dusk/src/TestCase.php:203
/Users/owen/Sites/footy-finance/vendor/laravel/dusk/src/TestCase.php:40

我已经看过TestCase.php的第40行和它的

public function baseUrl()
{
    return config('app.url');
}

所以它看起来确实和全局config助手有关,有人有什么想法吗?
我在跑

  • PHP 7.0.14语言
  • Laravel/框架5.4.8
  • 拉拉威尔/黄昏1.0.5

完整的composer.lock可以在https://gist.github.com/OwenMelbz/c05172b33f6eb4483e37a56469b53722上看到
祝你们好运,你们有主意了!
干杯:)

vulvrdjw

vulvrdjw1#

我在日志中有此错误

Class config does not exist

我的问题是,在.env文件中,我以以下方式设置了一个配置变量:

APP_NAME=Application Name

请注意空格。当我将其更改为以下内容时:

APP_NAME="Application Name"

问题解决了

siv3szwd

siv3szwd2#

此问题与.env文件App_Name有关
在原始文件中是这样写的〉〉〉APP_NAME=Application Name
就像这样APP_NAME="Application Name"

0yg35tkg

0yg35tkg3#

在我的案例中,这个解决方案很有效:

**1)**删除bootstrap/cache文件夹的所有内容
**2)**运行composer dump命令

9udxz4iz

9udxz4iz4#

对于任何其他有过这个问题的人。
我更喜欢在composer文件中设置稳定,它安装了PHPUnit 6。
这是“使稳定的今天”-因此它安装在 composer 更新。
降级到PHPUnit 5解决了这个问题-所以今天开始的时机不好。

xienkqul

xienkqul5#

我只是遇到了同样的问题,在我的情况下,.env是所有干净的,没有未 Package 的空白空间。
在编写/调试测试用例时,如果在该测试中使用setup()方法,而忘记将parent::setup()作为该函数中的第一条语句调用,则也会出现此错误消息。

protected $stuf;

function setup() {
    parent::setup();

    $this->stuf = 'stuf';
}

我发现了非常有用的信息here,当你收到这个错误消息时,还会发生什么。

l0oc07j2

l0oc07j26#

我也遇到过这个问题。对我来说,这是由于在dataProvider方法中调用config()函数引起的。在createApplication()方法初始化应用程序并填充DI容器之前,DataProvider被调用。因此config()失败,因为helper函数中的app('config')调用无法从容器中解析config类。

djmepvbi

djmepvbi7#

我已经很晚了,但是对于任何在Laravel的单元测试中遇到同样问题并且上面的解决方案都不起作用的人,你可以看看我的解决方案,看看这是否会有帮助。
在我的例子中,我试图调用一个方法来删除Redis数据库中所有的测试键,这个方法是在类的tearDown方法中调用的,之所以会出现这个错误,是因为在实际的tearDown代码执行之前调用了父构造函数,这就是我出现这个错误的原因。
而不是这个......

/**
 * tearDown is executed after test stub
 */
protected function tearDown()
{
    parent::tearDown();

    $this->deleteTestKeys();
}

换成这个...

protected function tearDown()
{
    $this->deleteTestKeys();

    parent::tearDown();
}

在这种情况下,类'还没有完全销毁,Laravel的config方法将被相应地调用。

xpcnnkqh

xpcnnkqh8#

我今天在Lumen应用程序中遇到了这个问题。经过一些调查和试验后,我发现这是因为在PHPSorm中,它将--no-configuration选项添加到了phpunit命令上,因为我没有在IDE中为项目配置PHPUnit设置。
我通过点击“Run〉Edit Configurations”,然后在“Defaults〉PHPUnit”下点击“Use alternative configuration file:”选项最右边的小按钮,并将"Default configuration file:“设置为项目phpunit.xml的完整路径,纠正了这一错误。
希望这对你有帮助!

iyr7buue

iyr7buue9#

我看到这个错误后,按照一些不可靠的安装说明,为第三方模块,其中说,注册一个服务提供商在bootstrap/app.php

$app->singleton(...);
$app->singleton(...);
$app->register(\Third\Party\ServiceProvider::class);

这导致$this->app['config']生成错误BindingResolutionException: Target class [config] does not exist.
我通过将其放入config/app.php(它所属的位置)来修复它:

/*
 * Package Service Providers...
 */
Third\Party\ServiceProvider::class,

相关问题