fruitcake / laravel-telescope-toolbar

A toolbar for Laravel Telescope, based on the Symfony Web Profiler.
MIT License
776 stars 38 forks source link

Error when using with Telescope on a dev-only env #39

Open Braunson opened 4 years ago

Braunson commented 4 years ago

I've installed Telescope and set it up to only register and be used on the dev environment, no problems there.

The issue is when I install this Toolbar and publish the config, when running composer install on a non-dev env, it throws a Facade error.

Digging into things, the cause is the config references Horizon classes Laravel\Telescope\EntryType in the collectors array in the toolbar config file that's published.

Any ideas on a way around this for a local only environment?

I am only loading Telescope and Toolbar packages on the local environment in AppServiceProvider.php@register

if ($this->app->isLocal()) {
    // Laravel Telescope
    $this->app->register(\Laravel\Telescope\TelescopeServiceProvider::class);
    $this->app->register(TelescopeServiceProvider::class);

    // Laravel Telescope Toolbar
    $this->app->register(\Fruitcake\TelescopeToolbar\ToolbarServiceProvider::class);
}

Error

[2020-06-25 17:32:02] production.ERROR: Class 'Laravel\Telescope\EntryType' not found {"exception":"[object] (Error(code: 0): Class 'Laravel\\Telescope\\EntryType' not found at /home/vagrant/project/config/telescope-toolbar.php:97)
[stacktrace]
#0 /home/vagrant/project/vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/LoadConfiguration.php(72): require()
#1 /home/vagrant/project/vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/LoadConfiguration.php(39): Illuminate\\Foundation\\Bootstrap\\LoadConfiguration->loadConfigurationFiles()
#2 /home/vagrant/project/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(230): Illuminate\\Foundation\\Bootstrap\\LoadConfiguration->bootstrap()
#3 /home/vagrant/project/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(310): Illuminate\\Foundation\\Application->bootstrapWith()
#4 /home/vagrant/project/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(127): Illuminate\\Foundation\\Console\\Kernel->bootstrap()
#5 /home/vagrant/project/artisan(37): Illuminate\\Foundation\\Console\\Kernel->handle()
#6 {main}
barryvdh commented 4 years ago

Did you put in in your require-dev section?

Braunson commented 4 years ago

@barryvdh Yes, same with Laravel Horizon which it's config doesn't seem to complain about missing classes.

The only "workaround" to get it not to complain was to remove the published config for the toolbar, but that's not necessarily ideal.

AndrewFeeney commented 3 years ago

It's a bit hacky, but I was able to workaround this issue, without deleting the published config by adding the following to the top of my config/telescope-toolbar.php file:

<?php

use Laravel\Telescope\EntryType;

// Add this conditional before the existing return statement
if (! class_exists(EntryType::class)) {
    return [];
}

return [
  //  ...
];
Oxicode commented 3 years ago

Thx @AndrewFeeney

Braunson commented 2 years ago

@barryvdh Can we expect an official fix for this? I can put in a PR for one..

fh32000 commented 2 years ago

any update @Braunson @barryvdh