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

Valeriy彼得罗夫
2023-01-22 11:05

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

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

添加到.npmrc:

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

或者运行$npm install:

$ NPM install canvas——canvas_prebuilt_binary_host_mirror=http://artifactory.local:8081/{repo-name}/

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

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

用户添加图片

用户添加图片

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

$npm配置注册表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犯错!“/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,这将指向github与以下URL: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.运行$npm安装canvas,现在应该可以工作了,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