根据documentation,我们可以使用git存储库作为NPM依赖项:
对于公共存储库来说,这很好,就像一个魅力。对于私人存储库(例如来自GitHub),我试过这个:Git网址可以是以下形式:
git://github.com/user/project.git#commit-ish git+ssh://user@hostname:project.git#commit-ish git+ssh://user@hostname/project.git#commit-ish git+http://user@hostname/project/blah.git#commit-ish git+https://user@hostname/project/blah.git#commit-ish
commit-ish可以是任何标记,sha或分支,可以作为git checkout的参数提供。默认值为
master
。
{
"name": "test",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"dependencies": {
"builder": "git+ssh://github.com/IonicaBizau/myprivatemodule.git"
},
"author": "",
"license": "ISC"
}
当我npm
安装时,我得到以下输出:
$ npm i
npm WARN package.json test@1.0.0 No description
npm WARN package.json test@1.0.0 No repository field.
npm WARN package.json test@1.0.0 No README data
npm ERR! git clone ssh://github.com/IonicaBizau/myprivatemodule.git Cloning into bare repository '/home/....'...
npm ERR! git clone ssh://github.com/IonicaBizau/myprivatemodule.git Permission denied (publickey).
npm ERR! git clone ssh://github.com/IonicaBizau/myprivatemodule.git fatal: Could not read from remote repository.
npm ERR! git clone ssh://github.com/IonicaBizau/myprivatemodule.git
npm ERR! git clone ssh://github.com/IonicaBizau/myprivatemodule.git Please make sure you have the correct access rights
npm ERR! git clone ssh://github.com/IonicaBizau/myprivatemodule.git and the repository exists.
npm ERR! Error: Command failed: Cloning into bare repository '/home/...'...
npm ERR! Permission denied (publickey).
npm ERR! fatal: Could not read from remote repository.
npm ERR!
npm ERR! Please make sure you have the correct access rights
npm ERR! and the repository exists.
此错误仅针对私有存储库出现。
我可以访问此存储库并通过SSH执行git clone ...
工作。
这个问题的解决方案是什么?
答案 0 :(得分:5)
正如文档中所说,git url需要采用以下形式:
git+ssh://user@hostname/project.git#commit-ish
我相信github需要通过ssh与用户git
一起访问,因此你的依赖url应该是:
"git+ssh://git@github.com/IonicaBizau/myprivatemodule.git"
答案 1 :(得分:1)
对我来说,只更改网址并没有让它发挥作用。以下是我必须采取的步骤来解决这个问题:
git+ssh://git@github.com:owner/repo.git#master
~/.ssh/config
创建文件,如果它不存在)强制使用DeployKey而不是默认的ssh密钥之后,npm安装工作正常。所有其他选项和解决方案都是由npm安装破坏产生的
答案 2 :(得分:0)
我一直在使用Node.js提示符和Babun提示符,这对我来说很好。我在新存储库中使用“npm install”收到此错误。当我使用GitHub的Git Shell时效果很好。
我已经设置了我的SSH密钥,并且在我做过的任何其他npm安装时都没有这个问题。