首页 > 解决方案 > Laravel 8 在 web.php 中找不到任何路由

问题描述

所以这对我来说是一个新的。我是一位经验丰富的 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 错误。该应用程序甚至找不到那条路线。

我尝试过的事情:

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

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

添加use App\Http\Controllers\HomeController到文件顶部

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

从 Composer.json 添加了 AutoLoad

  "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'));
        });
    }

标签: phplaravel

解决方案


因此,根据上面的@lagbox 评论,我运行了php artisan config:cache它,然后解决了我原来的错误。但是,然后我收到了一个新的说明:

Call to undefined method Closure::__set_state()

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

如果我错过了基于上述内容从中恢复的任何步骤,请告诉我。诸如额外的工匠命令或重新优化事物或其他提示之类的东西。


推荐阅读