Laravel错误屏幕,哪个文件引发错误以及要修复的文件?

时间:2019-01-23 08:32:33

标签: laravel error-handling

我真的很想了解问题在我的项目中的哪个位置,并且我喜欢Laravel,但与此同时,也很难找到问题的根源。

我不知道我是否缺少知识(也许是这样),或者我是否需要一些魔术棒来了解文件引发错误的原因。

我目前正在使用3个课程:

  1. HttpClientContract.php文件夹中的App\Services\Http
  2. HttpClient.php文件夹中的App\Services\Http
  3. HttpClientServiceProvider.php文件夹中的App\Providers

可能是我给某个东西起了错误的名字或错误的路径,但是我遇到的错误如下:

enter image description here

从这里我知道我叫Class App\Services\HttpClientContract不存在,很好。但是我在哪里犯了这个错误? :(

它说在...src/Illuminate/Routing/RouteSignatureParameters.php中,这大概是子容器类,但是我不知道 MY 错误在哪里。


[编辑]

我可以想到RouteSignatureParameters.php文件,当然是routes/web.php。但我再举一个例子:

7:20分钟的Laracast lesson中,routes/web.php由以下组成:

Route::get('/', function(){
    dd(app('example'));
});

Example类未导入或未绑定到应用容器,因此,此错误将触发以下情况:

enter image description here

我需要修复的文件是web.php文件夹中的routes,但是Laravel错误处理无法告诉我这一点,所以我如何解决呢?

有没有一种方法可以显示实际需要修复的文件?

1 个答案:

答案 0 :(得分:3)

实际上laravel会告诉您哪个文件引起了该错误。下图中的红色框是您的整个调用堆栈(回溯),而生成错误的文件介于两者之间 image of laravel error page

为了简化操作,您可以仅将调用堆栈更改为应用程序框架,并且可以更轻松地找到错误所在的文件。 image of laravel error call stack

这是App\Http\Controllers\HomeController.php文件的第35行

35        app('example');
36
37        return view('home');

当您犯语法错误或类似的错误时,它会很直接(检查图像,只有一个文件),但是如果您像这样犯的错误则有所不同,因为直到不存在该错误才发生试图实例化该类,这就是为什么您获得一长串调用堆栈的原因。 image of laravel error screen