ReflectionException在Container.php的第741行:类别名view不存在。

11

我正在使用Homestead处理一个Laravel 5.1项目。我进入了我的Vagrant虚拟机并尝试运行Composer Update命令来更新我的项目,但是现在我遇到了以下错误:

    1. in Container.php line 741
    2. at ReflectionClass->__construct('view') in Container.php line 741
    3. at Container->build('view', array()) in Container.php line 631
    4. at Container->make('view', array()) in Application.php line 674
    5. at Application->make('Illuminate\Contracts\View\Factory') in Container.php line 842
    6. at Container->resolveClass(object(ReflectionParameter)) in Container.php line 805
    7. at Container->getDependencies(array(object(ReflectionParameter)), array()) in Container.php line 776
    8. at Container->build('Illuminate\View\Middleware\ShareErrorsFromSession', array()) in Container.php line 631
    9. at Container->make('Illuminate\View\Middleware\ShareErrorsFromSession', array()) in /home/vagrant/Sites/laravel-basics/vendor/laravel/framework/src/Illuminate/Foundation/Application.php line 674
   10. at Application->make('Illuminate\View\Middleware\ShareErrorsFromSession') in Pipeline.php line 123
   11. at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in StartSession.php line 62
   12. at StartSession->handle(object(Request), object(Closure))
   13. at call_user_func_array(array(object(StartSession), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124
   14. at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in AddQueuedCookiesToResponse.php line 37
   15. at AddQueuedCookiesToResponse->handle(object(Request), object(Closure))
   16. at call_user_func_array(array(object(AddQueuedCookiesToResponse), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124
   17. at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in EncryptCookies.php line 59
   18. at EncryptCookies->handle(object(Request), object(Closure))
   19. at call_user_func_array(array(object(EncryptCookies), 'handle'),  array(object(Request), object(Closure))) in Pipeline.php line 124
   20. at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in CheckForMaintenanceMode.php line 44
   21. at CheckForMaintenanceMode->handle(object(Request), object(Closure))
   22. at call_user_func_array(array(object(CheckForMaintenanceMode), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124
   23. at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
   24. at call_user_func(object(Closure), object(Request)) in Pipeline.php line 103
   25. at Pipeline->then(object(Closure)) in Kernel.php line 122
   26. at Kernel->sendRequestThroughRouter(object(Request)) in Kernel.php line 87
   27. at Kernel->handle(object(Request)) in index.php line 54

我不确定是什么出了问题。我之前一直在使用Laravel 5.1并且Composer运行得很好。我觉得我有两个基本选项:1)尝试恢复到以前版本的Composer或2)恢复到我的项目的早期版本。然而,有没有更简单的解决方法呢?

7个回答

33

我已经遇到了这个错误消息两次,所以为了以后需要在谷歌上搜索解决方法,我把解决方案放在这里。

这种错误有时会发生是因为“/bootstrap/cache”目录不可写。 因此,它无法编译视图。 解决方案是使用chmod命令使该目录可写。

大功告成,欢迎来自未来的我。


谢谢过去的我!你这次真的救了我的命。 - Jordan Lapp
1
这对我很有帮助 :) - Sharn White
1
谢谢,他们为什么不能直接放一个指示这个问题的错误! - mic
1
在我的特定情况下,该目录已被删除,并且它不会尝试创建它。点赞 +20。 - DAB
1
在这里放置一个捐赠链接,你就会变得富有 :). 你刚刚拯救了我的早晨! - gthuo
显示剩余2条评论

8
请确保在您的config/app.php文件中将Illuminate\View\ViewServiceProvider列入提供程序列表。
显然,容器中没有view服务,而这个提供程序设置了它。

搞定了。非常感谢你。 - MikeAguilera210
当我尝试将 ‘Laravel\Socialite\SocialiteServiceProvider’ 更新为 Laravel\Socialite\SocialiteServiceProvider::class 时,就出现了这个错误。 - Peter
我确保它存在,但仍然出现错误 :( - C.Astraea

1

供我将来参考:

这可能是由于以下几个原因导致的。最常见的是:

  • bootstrap/cache 不可写。
  • 缺少 config/view.php 或该文件存在语法错误。
  • 尝试使用 composer dumpautoload -o
  • config/app.php 中,ViewServiceProviderView 别名不能被注释掉。

在 artisan 中,您可能无法看到精确的错误。如果是这样,请转到错误行并转储堆栈跟踪。在这种情况下,文件将是 Illuminate/Container/Container.php,第 741 行(或屏幕上显示的行)。使用 dd($e) 转储原始异常,并查看错误从何处开始。


0

我遇到了同样的问题,尝试了上述解决方案但都没有成功。在运行composer dump-autoload之后,我发现问题出在我忘记安装一个包(Laravel Excel)了,这个包我在开发服务器上已经设置好了,但是还没有加载到生产服务器上。


0
在我的情况下,文件的命名不正确。该类声明如下:
class NoSessionAccessMiddleware {

但是文件名为NoSessionAccess.php,我只是将文件重命名为NoSessionAccessMiddleware.php,问题就解决了。


0

在更新项目命名空间后,我遇到了同样的问题。我不得不更新composer.json文件:

 "psr-4": {
        "App\\": "myforms/app/"
    } 

to:

 "psr-4": {
        "App\\": "app/"
    }

在服务器上,在您的源目录中运行 composer update 然后运行 composer dump-autoload


-5

这也可能发生在“bootstrap”文件夹及其内容的权限不正确时。对我来说,将其chmod为可写状态可以解决问题。


2
这个答案重复了 https://dev59.com/4FsW5IYBdhLWcg3wspEF#35833239 已经说过的内容。 - Ryan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接