Composer更新在自己的包上失败

时间:2016-03-14 15:56:18

标签: laravel composer-php

我制作了一个名为nickdekruijk/larapages的Composer包。我第一次做composer required nickdekruijk/larapages时工作正常。但在我将服务提供商添加到config/app.php后,我无法再运行composer update

$ composer update
> php artisan clear-compiled
Loading composer repositories with package information
Updating dependencies (including require-dev)
Nothing to install or update
Generating autoload files
> php artisan optimize

  [Symfony\Component\Debug\Exception\FatalErrorException]
  Class 'NickDeKruijk\LaraPages\LaraPagesServiceProvider' not found

到目前为止,唯一的解决方法是从config/app.php删除服务提供商(或评论该行),运行composer update,然后再次将其取消(取消注释),这非常烦人。难道我做错了什么?我可能需要修理我的包吗?

2 个答案:

答案 0 :(得分:0)

如果已安装软件包,则不应存在问题。您确定包的名称空间没有问题,并且该类实际存在吗?

作为一种解决方法,有助于解决服务提供商尚未实际可用的任何相关问题,您可以运行Composer而不是运行Laravel的脚本(导致错误)。

composer update --no-scripts

答案 1 :(得分:0)

我想我修好了! 问题是自动加载器。 首先,当我将文件从src / *移动到src / NickDeKruijk / LaraPages / *作曲家更新工作正常。但是我不想永久地移动文件(搞砸了我的git repo)所以我把它添加到了包composer.json中:

"autoload": {
    "psr-4": {
        "NickDeKruijk\\LaraPages\\": "src/"
    }
}

现在我可以运行作曲家更新了!