尝试从5.8升级到laravel 6后,出现以下代码错误,以前有人遇到过吗?
Fatal error: Uncaught TypeError: Argument 2 passed to Illuminate\Routing\UrlGenerator::__construct() must be an instance of Illuminate\Http\Request, null given, called in C:\xampp\htdocs\rebuild\vendor\laravel\framework\src\Illuminate\Routing\RoutingServiceProvider.php on line 68 and defined in C:\xampp\htdocs\rebuild\vendor\laravel\framework\src\Illuminate\Routing\UrlGenerator.php:120
Stack trace:
#0 C:\xampp\htdocs\rebuild\vendor\laravel\framework\src\Illuminate\Routing\RoutingServiceProvider.php(68): Illuminate\Routing\UrlGenerator->__construct(Object(Illuminate\Routing\RouteCollection), NULL, NULL)
#1 C:\xampp\htdocs\rebuild\vendor\laravel\framework\src\Illuminate\Container\Container.php(799): Illuminate\Routing\RoutingServiceProvider->Illuminate\Routing\{closure}(Object(Illuminate\Foundation\Application), Array)
#2 C:\xampp\htdocs\rebuild\vendor\laravel\framework\src\Illuminate\Container\Container.php(681): Illuminate\Container\Container->build(Object(Closure))
#3 C:\xampp\htdocs\rebuild\vendor\laravel\framework\src\ in C:\xampp\htdocs\rebuild\vendor\laravel\framework\src\Illuminate\Routing\UrlGenerator.php on line 120
答案 0 :(得分:0)
类似的问题已经在Laravel repository和Laracasts上列出
问题似乎是由于配置文件中使用了url()
和asset()
辅助功能。
要解决此错误,请使用config()
或base_path
或在配置文件中定义绝对路径或相对路径,例如,不要使用url()
和assset()
函数
'cdn' => url('vendor/js/tinymce/tinymce.min.js'),
更改为
'cdn' => Config('app.url').'/vendor/js/tinymce/tinymce.min.js',
将asset('home')
更改为base_path('public/home'),
注意::您不应在config内部使用laravel依赖项,因为 配置是在请求生命周期的早期加载的,例如 全局助手可能不可用。
如果您在配置文件中使用某些依赖项,请在.env
文件中定义它们