我安装了Laravel,现在每次运行composer update
、php artisan routes
或任何composer命令时都会出现此错误:
Call to undefined method IlluminateHttpResponse::view()
到目前为止,我已经在互联网上搜索并尝试了以下建议的解决方案,但没有任何效果:
1( 网上很多建议的答案都是删除vendor/compiled.php
,重新运行composer更新。但当我转到供应商文件夹时,我在那里找不到任何compiled.php文件。唯一存在的文件是:autoload.php
2( 我还尝试在storage/framework/
文件夹中搜索compiled.php,但也没有。
3( 我甚至尝试使用--force标志php artisan optimize --force
运行optimize,它显示了与上面相同的错误。
4( 我查看了boostrap/autoload.php的编译路径,它说$compiledPath = __DIR__.'/cache/compiled.php';
我只能看到boostrap/cache文件夹,而它没有这个文件。
这里怎么了?我是拉拉维尔的新手,我不明白这个错误意味着什么。根据答案,我正在四处寻找compiled.php
来删除并再次运行更新,我甚至不知道这是否是正确的解决方案。有人能在这里帮助我如何进行故障排除吗?
我昨天更新后安装了Laravel 5.1.6。我今天还运行了composer dumpautoload
命令,我想知道这个错误是否在那之后开始发生。现在composer中的任何命令都会出现上述错误。
编辑:现在,甚至我的网站浏览器视图也显示了错误:
FatalErrorException in Facade.php line 210:
Call to undefined method IlluminateFoundationApplication::missing()
我还尝试删除完整的供应商文件夹和composer.lock,并重新运行composer install
。在安装接近尾声时,当生成自动加载文件时,它再次显示此错误并停止。
第2版:@NehalHasnayeen在评论中说得绝对正确。此错误是由于应用程序调用响应类上的视图方法而导致的,而响应类没有视图方法。一旦我把它从我的路线上删除,它就起了作用。这是我的路线文件:
Route::get('/', function () {
return view('index');
//return View::make('index');
});
Route::group(['prefix' => 'api'], function()
{
Route::resource('authenticate', 'AuthenticateController', ['only' => ['index']]);
Route::post('authenticate', 'AuthenticateController@authenticate');
});
// -------- THIS WAS CAUSING THE ISSUE - REMOVING THIS WORKED AFTER THAT ------
//App::missing(function($exception) {
// return view('index');
//});
这就引出了我的最后一个问题,为什么包罗万象的路线会出现这个错误?我从这里了解到,添加以上内容将把所有其他路由请求重定向到索引。什么是正确的方法?是在《拉拉威尔5》中发生了变化,还是我做错了什么?
对于第一个错误:你的应用程序正在Response类上调用view方法,但Response类没有view方法,所以找到它调用此方法的文件&删除它&用正确的方法替换
对于第二个错误:App::缺少的是laravel 4版本,它在laravel 5中被删除。要在您的app\exceptions\handler.php文件中实现相同的效果,请在呈现方法中添加此项
public function render($request, Exception $e)
{
if ($e instanceof SymfonyComponentHttpKernelExceptionNotFoundHttpException) {
return response()->view('index', [], 404);
}
return parent::render($request, $e);
}