【问题标题】:Provider Class not found In ProviderRepository.php line 208在 ProviderRepository.php 第 208 行中找不到提供程序类
【发布时间】:2019-05-09 10:03:48
【问题描述】:

我尝试卸载 spatie/Geocoder 包 https://github.com/spatie/geocoder 它来自我的 laravel 应用程序,它从 Github 中提取了包,但包卸载不成功。

下面是 composer 命令返回的错误

终端屏幕截图:

提前致谢

【问题讨论】:

  • 你跑composer dumpautoload了吗?
  • 您是否尝试清除您的配置? php artisan config:clear
  • 是同时运行命令 composer dumautoload 和 php artisan config:clear 但给出相同的错误@aynber
  • 请以可读的形式分享错误信息 - 文本最好作为文本分享。此外,您如何卸载该软件包?

标签: php laravel composer-php


【解决方案1】:

删除下面的行:

// config/app.php
'providers' => [
    '...',
    Spatie\Geocoder\GeocoderServiceProvider::class
];
// config/app.php
'aliases' => array(
    ...
    'Geocoder' => Spatie\Geocoder\Facades\Geocoder::class,
)

在您的服务器控制台中运行“composer du”。

【讨论】:

  • 已经从配置文件中删除了这些行,但没有工作,显示相同的错误@arthur Samarcos
【解决方案2】:

只需按照以下步骤即可解决问题。转到您的项目 > bootstrap->cache->config.php 手动从缓存数组中删除提供程序和别名。

【讨论】:

  • 完美的解决方案,如果没有找到任何提供程序文件,它可以在这种情况下工作。
【解决方案3】:

我在之前的 laravel 项目中遇到了同样的问题。

先试一试:

service apache2 restart

或任何类似的命令,具体取决于您的操作系统,例如我重新启动了我的 wamp 服务器。

然后在你的 Laravel 文件夹中:

composer dump-autoload

希望对你有帮助。

【讨论】:

  • 对我不起作用
【解决方案4】:

我遇到了同样的问题。我尝试了转储自动加载,清除配置等等,但没有任何效果。最后,我从 bootstrap/cache 中删除了 config.php,然后运行了 composer dump-autoload。那行得通。

【讨论】:

  • 没有帮助我:(
  • 它对我不起作用
【解决方案5】:

首先检查 composer.json 文件,在 autoload 部分的 psr-4 键下,您可以定义从命名空间到路径的映射,相对于包根目录。

   {
"autoload": {
    "psr-4": {
         "Spatie\\Geocoder\\": "src" //<<---For example, in your case, this mapping should be done
    }
}

}

然后运行以下命令重新生成项目中需要包含的所有类的列表

composer dump-autoload

有关更多信息和示例,请查看此链接 https://getcomposer.org/doc/04-schema.md#autoload

【讨论】:

  • 请在您的答案中添加一些解释,以便其他人可以从中学习 - 应该为未安装的包添加哪些映射?
  • 感谢您的指导,如果不清楚,我很抱歉。我添加了更多细节,希望对您有用。
  • 你还没有告诉为什么需要这样做。 OP 删除了该包,因此不应加载该命名空间中的任何内容。
  • 我的语言不是英语,请在您的评论中添加一些解释;)什么是 OP?这个错误与这个包无关,它与 laravel core 一起抛出。我在安装 laravel 模块包时遇到了这个错误,我设置了相同的配置来修复它!
【解决方案6】:

对我来说最简单的事情就是删除 /bootstrap/cache/ 中的文件。这些将自动重新生成。

【讨论】:

  • 但文件再次出现然后又出错
  • 首先从 app.php 中删除提供者和别名。然后删除 /bootstrap/cache 目录,然后在 bootstrap 目录中再次创建目录缓存目录。继续运行 composer dump-autoload。
【解决方案7】:

最终,对我有用的修复:

删除文件夹“vendor”,然后再次运行composer install。

更具体的修复可能是可能的,但这无论如何都会很好地清理。

【讨论】:

  • 唯一对我有用的解决方案,因为我在 bootstrap/cache 文件夹中没有 config.php 文件。旧的包别名仍然保留在某些文件中,但似乎没有出错。
  • 为我工作,似乎 composer.lock 没有更新最新要求
【解决方案8】:

在app\config.php

替换

JeroenNoten\LaravelAdminLte\ServiceProvider::class,

与

JeroenNoten\LaravelAdminLte\AdminLteServiceProvider::class,

然后做任何你想做的事。

【讨论】:

    【解决方案9】:

    尝试完全删除app\config.php 文件或删除app\config.php 中与Spatie\Geocoder\GeocoderServiceProvider 关联的提供程序/别名。

    【讨论】:

      【解决方案10】:

      这是为我整理的。

      我导航到

      project > bootstrap->cache folder.
      

      那里,有这个文件

      packages.php
      

      我删除了。

      rm packages.php
      

      然后我跑了

      composer dump-autoload
      

      请注意,在运行上述命令之前,我尝试运行以下命令,但没有成功

      composer dump-autoload --no-dev
      

      我在生产中运行了上述内容。

      【讨论】:

        【解决方案11】:

        从config/app.php 中删除JeroenNoten\LaravelAdminLte\ServiceProvider::class 即可解决问题

        【讨论】:

          【解决方案12】:
          1. 运行:composer update

          2. 运行:composer dump-autoload

          Laravel 8.x 对我有用

          【讨论】:

          • 在大多数情况下,像这次作曲家更新为我完成了工作。
          【解决方案13】:

          使用这 3 个命令来修复错误。

          composer install --optimize-autoloader --no-dev
              
          php artisan config:cache
          
          php artisan cache:clear
          

          【讨论】:

            猜你喜欢
            • 2021-05-04
            • 1970-01-01
            • 2018-12-26
            • 2016-02-19
            • 2014-11-30
            • 1970-01-01
            • 2014-10-14
            • 2016-07-23
            相关资源
            最近更新 更多