Composer 2.3.7执行init命令触发Author/Name相关TypeError报错
问题复现状态
- 本地已完成Composer安装,CMD环境执行
composer -V可正常返回版本号2.3.7 - VS Code终端内执行
composer init尝试生成composer.json文件时抛出如下错误:
In InitCommand.php line 465: [TypeError] Composer\Command\InitCommand::parseAuthorString(): Argument #1 ($author) must be of type string, null given, called in phar://C:/ProgramData/ComposerSetup/bin/composer.ph ar/src/Composer/Command/InitCommand.php on line 345
报错根因
这是Composer 2.3.7版本的已知逻辑缺陷:composer init运行时会自动读取Git全局配置中的用户名、邮箱作为默认的包作者填充值,如果当前系统未配置Git全局用户信息,或是VS Code终端的环境变量未正确加载Git配置路径,就会读取到null值传入作者解析方法,触发严格类型校验报错。
可用解决方法
- 方法1:补全Git全局配置
终端执行以下两条命令配置全局Git用户信息,替换占位内容为个人实际信息:
配置完成后重启VS Code终端,重新执行git config --global user.name "你的姓名" git config --global user.email "你的联系邮箱"composer init即可正常走交互流程。 - 方法2:非交互模式跳过自动读取
执行init命令时追加--no-interaction参数,手动传入必要配置,跳过自动读取系统信息的步骤,示例:composer init --no-interaction --name="vendor/package" --author="你的姓名 <你的邮箱>" - 方法3:升级Composer版本
该类型校验问题在后续的Composer稳定版中已被修复,执行自带的升级命令更新到最新版本即可:
升级完成后重新执行初始化命令即可。composer self-update
内容的提问来源于stack exchange,提问作者Davit Shavliashvili
相关产品推荐
相关产品推荐

