npm安装git源依赖报refusing to work with credential missing host field错误如何解决
问题根因
你遇到的fatal: refusing to work with credential missing host field报错,核心原因是git尝试为git://协议的仓库地址读取凭证,但git://协议本身不携带host字段,触发了凭证校验逻辑报错。你配置的insteadOf规则预期是将git://地址替换为https://地址,但该规则没有正常触发,导致git仍按git://协议执行请求。
解决步骤
- 步骤1:确认git地址替换规则生效
执行以下命令检查全局替换规则是否配置成功:
正常应返回git config --global --get url."https://hostname.com/".insteadOfgit://hostname.com/,如果无返回值,重新执行配置命令写入规则:git config --global url."https://hostname.com/".insteadOf git://hostname.com/ - 步骤2:调整凭证助手作用范围
你当前配置了全局的凭证存储助手,会触发所有协议的凭证校验逻辑。可以在.gitconfig中补充配置,避免git为git://协议地址查找凭证:
也可以直接指定仅[credential "git://hostname.com"] helper = ""https://hostname.com地址使用存储的凭证,替换原来的全局[credential]块:
另外你配置中空的[credential "https://hostname.com"] helper = store[https]块属于冗余内容,可以直接删除。 - 步骤3:验证配置有效性
手动执行报错的git命令验证配置:
如果能正常返回仓库的分支和标签列表,说明配置已生效,重新执行npm安装命令即可。git ls-remote -h -t git://hostname.com/scm/projects/project.name.git - 可选快速方案
不想修改配置的话,可以直接将安装命令中的git://替换为https://执行:npm i https://hostname.com/scm/projects/project.name.git#tag123
内容的提问来源于stack exchange,提问作者Chriss
相关产品推荐
相关产品推荐

