答案:require报“Could not find package”主因是repositories未在项目根composer.json中正确定义、本地包name与require不完全匹配、路径非相对或缺失composer.json。Composer只认repositories配置、本地composer.json的name及路径相对性,不扫描、不猜测、不fallback。

必须用 repositories 声明 path 类型仓库,其他方式(复制到 vendor、手动改 autoload)在 CI 或新环境里必然失效。
为什么 composer require 报 “Could not find package”
这不是网络问题,也不是缓存没清,而是以下任一条件未满足:
- 本地包的
composer.json中name字段(如"myorg/utils")和你在composer require时写的包名不完全一致(大小写敏感) - 本地包没写
version,且项目composer.json没设"minimum-stability": "dev",导致dev-main这类分支名被稳定性策略过滤掉 -
url路径指向了一个空目录,或目录里根本没composer.json - 执行的是
composer require myorg/utils,但没先配好repositories——Composer 不会“边猜边装”,它只从已声明的源里找
怎么配 repositories 才算生效
配置必须写在项目根目录 composer.json 的根级 repositories 数组里,不能塞进 require 或其他字段:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
-
type必须是"path",不是"package"或"vcs" -
url是相对于composer.json的路径(如"./packages/my-utils"),不能带file://,也不能用绝对路径(/home/user/xxx或C:/xxx在多数场景下会静默失败) - 整个
repositories是数组,哪怕只加一个,也要写成[{ "type": "path", "url": "./packages/my-utils" }] - 如果本地包目录里没有合法的
composer.json(比如缺name或语法错误),Composer 会跳过该仓库,不报错也不提示
装上了但 Class not found 怎么办
自动加载失败,90% 和 Composer 本身无关,而是框架的加载链路断了:
- 确认本地包的
composer.json里有正确的autoload配置,例如:"psr-4": {"MyOrg\Utils\": "src/"} - 运行
composer dump-autoload(开发阶段不用加-o),否则新命名空间不会注册进自动加载器 - 如果包提供了
LaravelServiceProvider或Facade,必须手动在config/app.php的providers或aliases里注册 —— Composer 不处理这部分 - 别在
require 'vendor/autoload.php'之前就实例化类,也别用相对路径引入 autoload 文件
Windows 下尤其容易卡住:路径分隔符和符号链接行为和 Linux/macOS 不同,url 写成 "./packagesmy-utils" 或混用反斜杠会导致静默失效。始终用正斜杠 + 相对路径,且确保目录真实存在、有可读权限。

















