ARTIFACTORY:如何从ARTIFACTORY下载node-pre-gyp预编译的二进制文件?

Valeriy彼得罗夫
2022-02-08 08:25

对于Node模块或包含Node模块的NPM包,我们使用人工存储库作为事实的单一来源。一些节点模块使用node-pre-gyp下载预编译的二进制文件。默认情况下,node-pre-gyp将尝试从外部资源(如github)下载这些二进制文件。本教程将利用node-pre-gyp的功能来从镜像下载二进制文件。在本例中,镜像将是一个JFrog Artifactory实例。

例如,有两种方法可以使用npm config参数从Artifactory下载二进制文件:

添加到.npmrc:

{module_name} _binary_host_mirror = http://artifactory.local: 8081 / {repo-name} /

或者使用$npm install运行:

$ NPM安装画布——canvas_prebuilt_binary_host_mirror=http://artifactory.local:8081/{repo-name}/

本文解释了如何使node-pre-gyp从Artifactory -下载画布预构建二进制文件

1.首先,使用Quick Setup特性创建由虚拟聚合的本地和远程NPM存储库。

用户添加图片

用户添加图片

2.用新创建的虚拟npm存储库替换默认的npm注册表。test-npm在本例中,执行如下命令:

$npm config set registry http://artifactory.local:8081/artifactory/api/npm/test-npm/

3.使用$npm login命令根据Artifactory对npm客户端进行身份验证。

美元npm登录

当出现提示时,输入Artifactory登录信息。

4.在使用美元npm安装使用Canvas命令安装node-canvas包,node-pre-gyp将尝试从https://github.com/下载预构建的二进制文件。例如,如果您无法访问github,因为您在防火墙后面,或者如果您只是想从Artifactory获取二进制文件,请按照以下步骤操作。

如果你没有访问github.com,你可以得到这样的错误信息:

npm犯错!node-pre-gyp info check检查了“/Users/valeriyp/node_modules/canvas/build/Release/canvas”。“节点”(未找到)
npm犯错!node-pre-gyp http GET https://github.com/Automattic/node-canvas/releases/download/v2.9.0/canvas-v2.9.0-node-v102-darwin-unknown-x64.tar.gz
npm犯错!node-pre-gyp犯错!安装请求https://github.com/Automattic/node-canvas/releases/download/v2.9.0/canvas-v2.9.0-node-v102-darwin-unknown-x64.tar.gz失败,原因:读取ECONNRESET

5.例如,创建一个通用的远程存储库node-canvas-remote,它将用以下URL指向github:https://github.com/Automattic/node-canvas/releases/download/

*这只是一个基本url。不要尝试“测试”它,向该端点发送GET请求将导致404 not found错误。

**本文使用node-canvas作为示例。我们可能需要在Artifactory中为其他节点模块设置额外的远程仓库(每个模块的仓库)。

用户添加图片

6.添加canvas_binary_host_mirror参数.npmrc文件:

$npm config set canvas_binary_host_mirror=http:// <用户名>:< API_KEY /密码> @artifactory.local: 8081 / artifactory / node-canvas-remote

7.运行安装画布canvas-v2.9.0-node-v102-darwin-unknown-x64.tar.gz将从Artifactory下载。

或者使用-canvas_binary_host_mirror =美元npm安装命令:

$npm install canvas -canvas_binary_host_mirror =http:// <用户名>:< API_KEY /密码> @artifactory.local: 8081 / artifactory / node-canvas-remote

例如,在某些情况下,当使用自签名证书在客户机和Artifactory服务器之间启用TLS加密时,node-pre-gyp可能会遇到TLS证书问题。错误信息可能如下所示:

错误:证书链中的自签名证书

Node-gyp似乎没有使用npm证书设置。请设置或添加以下环境变量到您的.npmrc明确地将node-gyp指向您的CA证书:

设置证书文件(推荐)

设置NODE_EXTRA_CA_CERTS = / / /你/ cert.pem路径

绕过TLS验证(有风险!)

设置NODE_TLS_REJECT_UNAUTHORIZED = 0