【发布时间】:2021-07-23 04:53:52
【问题描述】:
所以这里对我来说是一个新的。我是一位经验丰富的 Laravel 开发人员,今天正在做一个项目。这是一个相当大的项目,它一直工作到现在。然而,我今天离开办公桌去吃午饭,当我回来时,我开始遇到这些错误。让我们假装我不在的时候有人惹我,我找不到其他原因。
错误基本上可以这样描述:我的web.php文件中没有路由有效。我在 chrome 调试器中得到了这个奇怪的结果:
Illuminate\Contracts\Container\BindingResolutionException
Target class [Illuminate\Support\Facades\App\Http\Controllers\HomeController] does not exist.
它的有趣之处在于它试图将Illuminate\Support\Facades 添加到控制器命名空间的开头。再说一次,不知道这是怎么开始的。
故事变得更有趣了。作为我文件的第一条路由,我只是放了一个回调函数:
use Illuminate\Support\Facades\App;
use Illuminate\Support\Facades\Route;
use Illuminate\Support\Facades\Auth;
Route::get('/test', function(){
return 123;
});
这会导致 404 错误。该应用甚至找不到该路线。
我尝试过的事情:
取消注释RouteServiceProvider.php 中的protected $namespace = 'App\\Http\\Controllers';
使用 Route::get('/test', 'HomeController@index'); 的 laravel 7 语法
在文件顶部添加use App\Http\Controllers\HomeController
这些解决方案似乎都没有帮助,因为我仍然遇到此错误。谁能给点建议?
添加了来自 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'));
});
}
【问题讨论】:
-
您遇到了命名空间问题。
Illuminate\Support\Facades\App\Http\Controllers\HomeController似乎不正确。您能否包括您的路线文件或其中的部分? -
我该如何解决这个问题,它位于什么文件中?
-
你缓存你的路由了吗?
-
是的,我已经运行
composer dump-autoload和php artisan cache:clear -
如果路由缓存被缓存则不会清除