【问题标题】:How to avoid "Could not scan for classes inside" error with Composer?如何避免 Composer 出现“无法扫描内部的类”错误?
【发布时间】:2020-04-28 10:46:05
【问题描述】:

(我知道其他人对此有 written,但在这种情况下答案似乎没有帮助)

我有一个 WordPress PHP 插件 (https://github.com/LiquidChurch/lqd-messages/),它使用 WDS-Shortcodes,而后者又使用 TGM-Plugin-Activation。当我从 lqd-messages 插件中运行 composer install 时,我收到以下错误:

在 ClassMapGenerator.php 第 69 行:

无法扫描“/lqd-messages/vendor/webdevstudios/wds-shortcodes/vendor/tgmpa/tgm-plugin-activation/class-tgm-plugin-activation.php”中似乎不是文件或文件夹的类”

然后我可以进入 /lqd-messages/vendor/webdevstudios/wds-shortcodes/vendor 并看到没有 tgmpa 文件夹。

如果我然后返回/wds-shortcodes 并运行composer install,将成功创建tgmpa 文件夹。

显然,这不太理想。有没有办法绕过这些额外的步骤?

【问题讨论】:

    标签: php wordpress composer-php


    【解决方案1】:

    这是 webdevstudios/wds-shortcodes 包中的错误 - 他们的 autoloadig settings 不正确。依赖项不应声明从vendor 目录内的其他依赖项加载文件 - 这不是他们关心的问题(并且这些文件在某些​​情况下不存在,比如你的情况)。

    我只能建议分叉这个包并修复自动加载设置:

    "autoload": {
        "classmap": ["includes/"]
    },
    

    顺便说一句:你在your package 中犯了同样的错误。

    【讨论】:

    • 谢谢!我想我的问题是,如果不使用自动加载器,我如何确保加载 tgmpa 插件?
    • 你可以使用 Composer 的自动加载器,你只是不应该从vendor 目录声明自动加载文件。每个包应该只为自己的文件定义自动加载 - Composer 将结合所有已安装包的自动加载。
    • 谢谢!我按照你的建议做了,我进步了。我还有一个错误,希望你能帮助我。 wds-shortcodes 需要 jtsternberg/shortcode-button(我删除了自动映射)。但即使删除了这个,我在尝试运行 phpunit 时也会出现错误:“/long/path/lqd-messages/vendor/php un /long/path/lqd-messages/vendor/webdevstudios/wds-shortcodes/vendor/jtsternberg/shortcode-button/shortcode-button.php on line 97”。
    猜你喜欢
    • 2017-12-18
    • 2016-09-27
    • 2014-12-26
    • 2014-01-02
    • 2015-01-12
    • 2015-06-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多