【发布时间】:2021-03-09 18:34:54
【问题描述】:
我正在尝试开发一个包,我们的某些应用程序将需要该包。但是,当我在应用程序中使用 composer 需要它时,我无法测试该包。
包有如下composer.json:
{
"name": "armcanada/target-horaire",
"type": "library",
"license": "MIT",
"description": "",
"authors": [
{
"name": "Anthony Duhaime",
"email": "aduhaime@armcanada.ca"
}
],
"require": {},
"autoload": {
"psr-4": {
"Armcanada\\TargetHoraire\\": "src/"
}
},
"minimum-stability": "dev"
}
在 composer.json 中的另一个应用程序中需要该包:
"require": {
"armcanada/target-horaire": "dev-master"
}
"repositories": [
{
"type": "path",
"url": "../target-horaire"
}
]
最后,我正在导入类并调用test() 方法:
use Armcanada\TargetHoraire\Models\Timeline;
...
dd((new Timeline())->test());
它导致以下错误:
"Class 'Armcanada\TargetHoraire\Models\Timeline' not found"
我在应用和包里都试过composer dumpautoload,还是没有效果。
我还尝试删除供应商文件夹和 package-lock.json 然后运行composer install,我现在收到错误:
include(/app/vendor/composer/../armcanada/target-horaire/src/Models/Timeline.php): failed to open stream: No such file or directory。但是,该文件确实存在:
我做错了什么?
【问题讨论】:
-
真的安装了吗?
-
是的,我可以在我的供应商文件夹中看到它
-
如果你查看
vendor/composer/autoload_psr4.php,你看到命名空间了吗? -
是的,它是这样设置的:
'armcanada\\TargetHoraire\\' => array($vendorDir . '/armcanada/target-horaire/src'),应该是大写A的Armcanada,为什么composer-dumpaotoload没有解决这个问题?我该怎么办? -
有趣的...希望它是
Armcanada\\...而不是armcanada\\...;有点奇怪
标签: php laravel package composer-php autoload