首页 > 解决方案 > 具有 semver 范围的 Git SSH URL 作为 npm 依赖项

问题描述

在遵循官方 npm 文档中的示例时

git+ssh://git@github.com:npm/npm.git#v1.0.27
git+ssh://git@github.com:npm/npm#semver:^5.0
git+https://isaacs@github.com/npm/npm.git
git://github.com/npm/npm.git#v1.0.27

我尝试npm install使用semver范围从私有 GitLab 存储库中获取依赖项,如下所示:

git+ssh://git@gitlab.example.com:group/project.git#semver:^1.2.3

但我收到以下错误:

npm 错误!代码 1
npm 错误!命令失败:/usr/bin/git checkout semver:^1.2.3
npm 错误!错误:pathspec 'semver:^1.2.3' 与 git 已知的任何文件都不匹配。
npm 错误!

npm 错误!可以在以下位置找到此运行的完整日志:
npm 错误!/path/to/DATE-debug.log

即使指定分支或特定标签工作正常:

git+ssh://git@gitlab.example.com:group/project.git#branch_1_2
git+ssh://git@gitlab.example.com:group/project.git#1.2.3

版本信息

标签: node.jsgitnpmgitlab

解决方案


这是一个错误

替换URL 的主机路径部分之间的冒号:

git+ssh://git@gitlab.example.com/group/project.git#semver:^1.2.3
         此处不要使用冒号 ^

信息

根据官方 npm 文档,您应该能够使用冒号或斜杠:

<protocol>://[<user>[:<password>]@]<hostname>[:<port>][:][/]<path>[#<commit-ish> | #semver:<semver>]

但 GitLab [un] 为您提供了带有冒号的链接以进行复制/粘贴。

正如在这个npm github 问题中提到的:

似乎早在 5.1.x 就出现了这种情况。使用时有效npm i -g npm@~5.0.0

正如引用的npm github pull request中所述,该错误现已修复,但从 v5.6.0 开始还不是 npm 的一部分


推荐阅读