我的node.js
应用使用了git repos中托管的多个私有共享模块。我在package.json中的依赖项块中使用如下所示的git URL:
"xxx-accountMgr": "git+ssh://git@github.xxx.ibm.com:xxx/lib-account-mgr.git",
当" cf push"在ssh上安装npm期间出现此错误:
npm ERR! git clone --template=/home/vcap/.npm/_git-remotes/_templates --mirror ssh://git@github.xxx.ibm.com/ipaas/lib-account-mgr.git /home/vcap/.npm/_git-remotes/ssh-git-github-xxx-ibm-com-xxx-lib-account-mgr-git-bf65c10c: ssh: Could not resolve hostname github.xxx.ibm.com: Name or service not known
我预计这是因为我还没有在bluemix中配置ssh密钥。那可能吗?如果没有,那么在bluemix中从私人仓库安装模块的替代方法是什么?
答案 0 :(得分:3)
如果您正在下载Git上托管的私有模块,您应该能够使用https协议(带信用卡)来访问它。
如果不适合您,有一个技巧可以帮助避免此问题:
1)将私有模块打包到您的应用程序(在node_modules中)
2)将私有模块移至package.json中的devDependencies
,而不是dependencies
,以便您的本地开发工作流不受影响。
npm install
将安装dependencies
和devDependencies
。通过 默认情况下,Bluemix只会安装dependencies
步骤2是必要的,因为即使您将私有node_modules
打包到您的应用程序,您的应用程序的暂存也将失败,因为npm
仍然尝试访问您的私有仓库以验证依赖项。
此外,如果您有一个忽略整个.cfignore
目录的node_modules
文件,则必须将其更改为仅忽略公共模块。
答案 1 :(得分:1)
如果私有存储库需要Github身份验证来访问共享的mdoules,Bluemix将无法访问它们。您可以使用git clone https://github.com/repo/etc
之类的命令,但这需要无需身份验证即可访问文件。
另一种方法是在使用cf push
之前手动安装您的仓库中的文件,以便它们可用。这不是一个很好的解决方案,但它可以在短期内解决问题。
答案 2 :(得分:1)
这里的问题是Bluemix无法回到企业网络,这显然是你的github repo所在的地方。
它与身份验证无关,尽管其他人在此处所说的对于公开可访问的git存储库来说是准确的
答案 3 :(得分:0)
这是一个解决方法,对我有用的是使用npmjs私有模块。一方面它可以工作,另一方面它很容易管理版本,并重用代码。当然,你需要做一些小改动,但是完全值得。
升级您的npmjs帐户以使用私有模块:https://www.npmjs.com/private-modules
在您的计算机上登录npmjs:
npm login
发布您的模块
将npmrc文件复制到项目中:
cp ~/.npmrc /path/to/your/project
npm install your_module --save
享受!
请注意,如果您更改密码,.npmrc内的令牌将被撤销。
令牌不是来自您的密码密码,而是更改 您的密码将使所有令牌无效。令牌有效 直到密码更改。您也可以使单个令牌无效 通过注销使用该令牌登录的计算机。
来源:https://docs.npmjs.com/private-modules/ci-server-config#checking-in-your-npmrc
答案 4 :(得分:0)
您还可以使用cfnpm模块(https://www.npmjs.com/package/cfnpm)来处理cliud代工厂中的私有包