NPM 对代理后面的 git+ssh 的依赖

问题描述 投票:0回答:1

在我们的一个 Node.js 项目中,

package.json
文件中有以下依赖项:

"cordova-plugin-mobile-ocr": "git+https://bitbucket.org/bhivedevs/cordova-plugin-mobile-ocr.git"

出于某种原因,一旦我运行

npm i
,结果在
package-lock.json
中如下:

"resolved": "git+ssh://[email protected]/bhivedevs/cordova-plugin-mobile-ocr.git#9f627f0d36dbb8ee544fb9b2174f6f127c878e3c"

然而,CI/CD 构建机器位于公司防火墙后面,该防火墙会阻止所有非 HTTP 连接,因此

npm i
的运行最终会失败并出现以下错误:

npm ERR! code 128
npm ERR! A git connection error occurred
npm ERR! command git --no-replace-objects ls-remote ssh://[email protected]/bhivedevs/cordova-plugin-mobile-ocr.git
npm ERR! ssh: connect to host bitbucket.org port 22: Operation timed out
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.

我对 NPM 或那个项目不太熟悉;我只是一名 DevOps 人员,负责让 CI/CD 流程发挥作用。 无法为传出 SSH 连接打开防火墙。那么我有什么选择呢?

为什么依赖项的 URL 从“git+https://”更改为“git+ssh://”?有没有办法防止这种情况发生?

npm firewall
1个回答
0
投票

您还可以通过运行以下命令将 Git 配置为始终对 Bitbucket 使用 HTTPS 而不是 SSH:

git config --global url."bitbucket.org/".insteadOf "ssh://[email protected]/"

这将强制 Git 在拉取依赖项时使用 HTTPS,避免 SSH 连接被防火墙阻止。

© www.soinside.com 2019 - 2024. All rights reserved.