我安装了Laravel,现在每次运行composer update
,php artisan routes
或任何作曲家命令时我都会收到此错误:
Call to undefined method Illuminate\Http\Response::view()
到目前为止,我已经在互联网上搜索并尝试了以下建议的解决方案,但没有任何效果:
1)网上有很多建议的答案说要删除vendor/compiled.php
并再次运行作曲家更新。但是当我去vendor文件夹时,我找不到任何compile.php文件。存在的唯一文件是:autoload.php
2)我也尝试在storage/framework/
文件夹中搜索compiled.php,但也没有。
3)我甚至尝试使用--force标志php artisan optimize --force
运行优化,它显示与上面相同的错误。
4)我查看了boostrap / autoload.php的编译路径,它说$compiledPath = __DIR__.'/cache/compiled.php';
我只能看到boostrap / cache文件夹而且没有这个文件。
这里有什么问题?我是Laravel的新手,我不明白这个错误意味着什么。按照那里的答案,我四处寻找compiled.php
删除并再次运行更新,我甚至不知道这是否是正确的解决方案。有人可以帮我解决这个问题吗?
我昨天做的更新后安装了 Laravel 5.1.6 。我今天也运行了composer dumpautoload
命令,我想知道在此之后是否发生了这个错误。现在,composer中的任何命令都会出现上述错误。
修改 现在,即使我的网站浏览器视图显示错误:
FatalErrorException in Facade.php line 210:
Call to undefined method Illuminate\Foundation\Application::missing()
我还尝试删除完整的供应商文件夹和composer.lock,然后重新运行composer install
。在生成自动加载文件时,在安装结束时,它再次显示此错误并停止。
编辑2: @NehalHasnayeen在评论中得到了绝对正确的答案。此错误是由于app在Response类上调用view方法引起的,而响应类没有view方法。一旦我从我的路线中移除它,它就有效了。这是我的路线档案:
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');
//});
我的最后一个问题是,为什么全能路线都会抛出这个错误?我从here读到,添加上述内容会将所有其他路由请求重定向到索引。什么是正确的方法?它是在Laravel 5中改变了还是我做错了什么?
答案 0 :(得分:2)
第一个错误: 你的app在Response类上调用了view方法,但是响应类没有view方法,所以找到它调用这个方法的文件&删除它&用正确的方法替换它
第二个错误: App :: missing适用于laravel 4版本,它将在laravel 5中删除。要在app \ exceptions \ handler.php文件中实现相同功能,请在渲染方法中添加此项
public function render($request, Exception $e)
{
if ($e instanceof \Symfony\Component\HttpKernel\Exception\NotFoundHttpException) {
return response()->view('index', [], 404);
}
return parent::render($request, $e);
}