【问题标题】:Laravel 8 not finding any route in web.phpLaravel 8 在 web.php 中找不到任何路由
【发布时间】: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-autoloadphp artisan cache:clear
  • 如果路由缓存被缓存则不会清除

标签: php laravel


【解决方案1】:

因此,根据上面的@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,瞧,我的应用程序现在又可以工作了。不知道这一切是如何发生的,但感谢那些做出回应并让我走上正轨的人。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-12-22
    • 1970-01-01
    • 2021-06-19
    • 2016-11-15
    • 1970-01-01
    • 2021-12-03
    • 2021-02-03
    相关资源
    最近更新 更多