【问题标题】:Bluemix node buildpack and modules in private repos私有存储库中的 Bluemix 节点构建包和模块
【发布时间】:2015-09-05 22:12:45
【问题描述】:

我的node.js 应用程序使用托管在 git repos 中的许多私有共享模块。我在 package.json 的依赖项块中使用如下 git URL:

"xxx-accountMgr": "git+ssh://git@github.xxx.ibm.com:xxx/lib-account-mgr.git",

在 npm install on ssh 期间“cf push”出现此错误时:

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 中的私有 repo 安装模块的替代方法是什么?

【问题讨论】:

    标签: npm cloud-foundry ibm-cloud


    【解决方案1】:

    如果您正在下载托管在 Git 上的私有模块,您应该能够使用 https 协议(带有凭据)来访问它。

    有一个技巧可以帮助避免这个问题,如果这不是你的选择:

    1) 使用您的应用程序打包私有模块(在 node_modules 中)

    2) 将私有模块移动到 package.json 中的 devDependencies,而不是 dependencies,这样您的本地开发工作流程不受影响。

    npm install 将安装 dependenciesdevDependencies。经过 默认情况下,Bluemix 将只安装 dependencies

    第 2 步是必要的,因为即使您将私有 node_modules 与您的应用程序打包在一起,您的应用程序的暂存也会失败,因为 npm 仍会尝试访问您的私有存储库以验证依赖关系。

    此外,如果您有一个忽略整个 node_modules 目录的 .cfignore 文件,则必须将其更改为仅忽略公共模块。

    【讨论】:

    • 我刚刚意识到,如果您有私有的本机依赖项,​​则此解决方案将不起作用,因为它们可能需要在 Bluemix 上重新编译。在这种情况下,您可以尝试使用 Pat Mueller 的“bluemix-private-packages”,通过在打包的私有依赖项上运行 npm install 来解决此问题:github.com/pmuellr/bluemix-private-packages
    【解决方案2】:

    如果私有存储库需要 Github 身份验证来访问共享 mdoule,Bluemix 将无法访问它们。您可以使用诸如git clone https://github.com/repo/etc 之类的命令,但这将要求无需身份验证即可访问文件。

    另一种方法是在使用 cf push 之前在您的存储库中手动安装文件,以便它们可用。这不是一个很好的解决方案,但它会在短期内解决问题。

    【讨论】:

      【解决方案3】:

      这里的问题是,Bluemix 无法返回到企业网络,这显然是您的 github 存储库所在的位置。

      这与身份验证无关,尽管其他人在这里所说的对于可公开访问的 git 存储库是准确的

      【讨论】:

        【解决方案4】:

        这是一种解决方法,对我有用的是使用 npmjs 私有模块。一方面它可以工作,另一方面它很容易管理版本和重用代码。当然,您需要进行一些小改动,但这是完全值得的。

        1. 升级您的 npmjs 帐户以使用私有模块:https://www.npmjs.com/private-modules

        2. 在您的计算机上登录到 npmjs: npm login

        3. 发布您的模块

        4. 将您的 npmrc 文件复制到您的项目中: cp ~/.npmrc /path/to/your/project

        5. npm install your_module --save

        6. 享受吧!

        请注意,如果您更改密码,.npmrc 中的令牌将被撤销。

        令牌不是从你的密码密码中派生出来的,而是不断变化的 您的密码将使所有令牌无效。令牌将有效 直到密码被更改。您还可以使单个令牌无效 通过在使用该令牌登录的计算机上注销。

        来源:https://docs.npmjs.com/private-modules/ci-server-config#checking-in-your-npmrc

        【讨论】:

          【解决方案5】:

          您也可以使用 cfnpm 模块 (https://www.npmjs.com/package/cfnpm),它旨在处理 cliud foundry 中的私有包

          【讨论】:

            猜你喜欢
            • 2018-10-26
            • 2017-02-25
            • 1970-01-01
            • 2022-01-14
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多