Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Laravel error - Class setEventDispatcher does not exist

Tags:

laravel

Short version

I'm getting this error, when I run php artisan serve and visit my home page:

ReflectionException (-1)
Class setEventDispatcher does not exist

Details

Laravel version: 5.6.39 Environment: local OS: macOS Mojave 10.14.2

It started, when I got an error using npm (in another project), so I reinstalled Node (this way).

After doing that, then this project (in question) couldn't be started. I was getting this error, when running php artisan serve:

dyld: Library not loaded: /usr/local/lib/libpng16.16.dylib with anything php related
Referenced from: /usr/local/bin/php
Reason: image not found

That error was resolved by updating and upgrading brew.

Then I was capable of starting the project (php artisan serve). But when I visit the home page, this error was shown:

ReflectionException (-1)
Class setEventDispatcher does not exist

If I follow the stack trace, then I can see that it was this line (from my homeController) that triggered the error:

if( ! Auth::check() ){
  return view( 'pages.home' );
}

If I commented that out, then the same error occured from another place, where the Auth-module was being used.

Here's the stack trace:

setEventDispatcher does not exist error

Does anyone know how to resolve this? I can't find any promising results on Google, - and I have no idea why this happens... :-/

Addition1

I tried composer clear-cache and deleting the vendor-folder, and then doing a composer install and the problem still occured.

I also checked my Service Providers, as Marcus suggested, - but I don't really know what to look for in there. It all looks pretty regular (no fancy if-statements or anything).

Addition2

I realized, that I couldn't connect to my database using Sequel Pro. And it was because Brew had updated my MySQL-version from 5.5 to 8.0.

That was resolved by doing something along these lines (I did a bunch of stuff, so I might be missing a coulple of steps):

brew unlink mysql
brew install [email protected]
brew switch mysql 5.7.21
brew link mysql

and I could then verify the version with mysql --version. I also had some permission issues with that MySQL-version-change, but I'm emitting that, so this doesn't get too long.

Addition3

I tried disabling the Laravel Debugbar (by deleting it from composer.json, deleting composer.lock and vendor and then running composer install). And that fixed it!! ... But!

When I later tried to install Barryvdh's IDE Helper, then the exact same error came back!?

I performed these three steps, to install the IDE Helper (and re-introduce the error):

  1. Run this command from the root of my directory: curl https://gist.githubusercontent.com/barryvdh/5227822/raw/4be028a27c4ec782965bb8f2fdcb4c08c71a441d/_ide_helper.php -o _ide_helper.php

  2. Add these lines to app/Provider/AppServiceProvider.php:

...

if ($this->app->environment() !== 'production') {
  $this->app->register(\Barryvdh\LaravelIdeHelper\IdeHelperServiceProvider::class);
}
  1. Run this command: composer require --dev barryvdh/laravel-ide-helper

So I'm back at this error:

ReflectionException (-1)
Class setEventDispatcher does not exist

... The stack trace is identical to the one shown previously (sprung from Container.php).

like image 692
Zeth Avatar asked Dec 28 '18 20:12

Zeth


1 Answers

Tried every solution, none of them worked.

Finally, i realised that when trying to upgrade php to 7.3.3 it was infact a network error that caused the fail. Read the logs, tried again, restarted valet and tried again.

It works now.

Upgrading to 7.3.3 was the solution indeed.

Thank you!

like image 91
Frederik B. Avatar answered Sep 23 '22 03:09

Frederik B.