【问题标题】:Composer Laravel Class 'yajra\Datatables\DatatablesServiceProvider' not found未找到作曲家 Laravel 类 'yajra\Datatables\DatatablesServiceProvider'
【发布时间】:2016-04-14 07:16:15
【问题描述】:

laravelcomposer package yajra/laravel-datatables 有问题 这是我来自composer.json 的要求部分:

"require": {
    "php": ">=5.5.9",
    "laravel/framework": "5.2.*",
    "cartalyst/sentinel": "^2.0",
    "laravelcollective/html": "^5.2",
    "yajra/laravel-datatables-oracle": "^6.1"
},

执行composer update 后一切正常,我可以检查供应商目录内部是否出现了 yajra 文件夹。 之后我在 app.php 中添加了新的提供者:

yajra\Datatables\DatatablesServiceProvider::class

然后运行 ​​php artisan 但控制台出现以下错误:

Class 'yajra\Datatables\DatatablesServiceProvider' not found

我可以通过编辑autoload_classmap.php文件并手动添加来修复这个错误

'yajra\\Datatables\\DatatablesServiceProvider' => $vendorDir . '/yajra/laravel-datatables-oracle/src/DatatablesServiceProvider.php',

无论如何,下次我执行 composer update 时,此行被删除并再次出现相同的错误,我再次必须手动编辑 autoload_classmap.php 文件。

有问题导致composer update 无法更新相关的自动加载文件。我不明白这是怎么回事。

【问题讨论】:

  • 你试过运行composer dump-autoload吗?

标签: php laravel namespaces composer-php


【解决方案1】:

你应该在你的app.php中使用

Yajra\Datatables\DatatablesServiceProvider::class

而不是

yajra\Datatables\DatatablesServiceProvider::class

(大写字母)

【讨论】:

  • 大写字母没有问题。使用 "require": { "php": ">=5.5.9", "laravel/framework": "5.2.*", "laravelcollective/html": "5.2.*", "cartalyst/sentinel" 重新创建作曲家: "2.0.*", "yajra/laravel-datatables-oracle": "~5.0" },以某种方式解决了问题。
  • 这解决了我从 5.x 升级到 6.x 时的问题
  • 我不能再复制了。
【解决方案2】:

尝试删除 composer.json 中的波浪号和插入符号等语法糖运算符。因为有时他们不允许安装确切的版本。同样的问题也发生在我身上。然后运行,

comoposer update

为我解决了这个问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-08
    • 2020-08-16
    • 2015-11-26
    相关资源
    最近更新 更多