Laravel 8在web.php中找不到任何路径



所以我有一个新的。我是一个经验丰富的Laravel开发人员,今天正在做一个项目。这是一个相当大的项目,它一直在运作到现在。然而,今天我离开办公桌去吃午饭,当我回来时,我开始犯这些错误。让我们假装我不在的时候有人惹我,我找不到其他原因了。

这个错误基本上可以这样描述:在我的web.php文件中没有路由可以工作。我在chrome调试器中得到了这个奇怪的结果:

IlluminateContractsContainerBindingResolutionException
Target class [IlluminateSupportFacadesAppHttpControllersHomeController] does not exist.

它的有趣之处在于,它试图将IlluminateSupportFacades前置到控制器名称空间的开头。再说一遍,不知道这是怎么开始的。

故事变得更有趣了。作为我文件的第一个路由,我只放了一个回调函数:

use IlluminateSupportFacadesApp;
use IlluminateSupportFacadesRoute;
use IlluminateSupportFacadesAuth;

Route::get('/test', function(){
return 123;
});

这将导致404错误。应用程序甚至找不到那条路线。

我尝试过的东西:

取消对RouteServiceProvider.php中的protected $namespace = 'App\Http\Controllers';的注释

使用Route::get('/test', 'HomeController@index');的laravel 7语法

use AppHttpControllersHomeController添加到文件的顶部

这些解决方案似乎都没有任何帮助,因为我仍然会遇到这个错误。有人能提供一些建议吗?

添加了Composer.json的自动加载

"autoload": {
"psr-4": {
"App\": "app/",
"Database\Factories\": "database/factories/",
"Database\Seeders\": "database/seeders/"
}
},

RouteServiceProvider.php

protected $namespace = 'App\Http\Controllers';
/**
* Define your route model bindings, pattern filters, etc.
*
* @return void
*/
public function boot()
{
$this->configureRateLimiting();
$this->routes(function () {
Route::prefix('api')
->middleware('api')
->namespace($this->namespace)
->group(base_path('routes/api.php'));
Route::middleware('web')
->namespace($this->namespace)
->group(base_path('routes/web.php'));
});
}

因此,基于上面的@lagbox注释,我运行了php artisan config:cache,然后解决了最初的错误。然而,我收到了一个新的声明:

Call to undefined method Closure::__set_state()

网上的所有其他问题都告诉我,为了消除这个错误,我必须从bootstrap/cache目录中删除config.php。但我没有!经过进一步挖掘,在Laravel 8中,您只需将routes-v7.php文件重命名为其他文件即可。我选择将其重命名为routes-v7-please-work.php,瞧,我的应用程序现在又可以工作了。不知道这一切是怎么发生的,但感谢那些做出回应并让我走上正轨的人。

如果基于我上面描述的事情,我错过了从中恢复的任何步骤,请告诉我。比如额外的手工命令或重新优化的东西或其他提示。