Cloud Build 无法 npm 安装 NodeJS 项目
Cloud Build failing to npm install a NodeJS project
我 运行 我的 cloudbuild.yaml
文件中的以下命令:
- name: "gcr.io/cloud-builders/npm"
args: ["install"]
此命令 运行 在 7 月 30 日正确,但从 10 月 5 日开始我收到此响应,随后是 make
输出流,直到命令失败:
Already have image (with digest): gcr.io/cloud-builders/npm
> grpc@1.24.1 install /workspace/node_modules/grpc
> node-pre-gyp install --fallback-to-build --library=static_library
node-pre-gyp WARN Using request for node-pre-gyp https download
node-pre-gyp WARN Tried to download(404): https://node-precompiled-binaries.grpc.io/grpc/v1.24.1/node-v83-linux-x64-glibc.tar.gz
node-pre-gyp WARN Pre-built binaries not found for grpc@1.24.1 and node@14.10.0 (node-v83 ABI, glibc) (falling back to source compile with node-gyp)
即使我从 git 之前成功的提交重建
,我也会收到此响应
我认为这可能是因为 Cloud Build 试图根据最近成功构建的输出将我的 NodeJS 项目构建为与之前不同的版本:
Already have image (with digest): gcr.io/cloud-builders/npm
> grpc@1.24.1 install /workspace/node_modules/grpc
> node-pre-gyp install --fallback-to-build --library=static_library
node-pre-gyp WARN Using request for node-pre-gyp https download
[grpc] Success: "/workspace/node_modules/grpc/src/node/extension_binary/node-v57-linux-x64-glibc/grpc_node.node" is installed via remote
我在 package.json
中添加了以下行,试图将我的 NodeJS 版本设置为 v57
(6.13.4
),但它没有效果:
"engines" : { "node" : "6.13.4" },
如有任何帮助,我们将不胜感激。最好我如何防止我的构建版本发生变化,因为这个意外的变化让我花费了比它应该花费的更多的时间
谢谢!
这似乎是一个已知问题。
第一个解决方案可以将nodejs版本降级到10.18.0。
迟到了,但必须使用needle下载的人:
node-pre-gyp WARN Using needle for node-pre-gyp https download
可以通过先安装 request 来解决这个问题:
npm install request
然后,照常安装grpc:
npm install grpc
这是因为node-pre-gyp在安装过程中有如下代码片段:
try {
http_get.impl = require('request');
http_get.type = 'request';
log.warn("Using request for node-pre-gyp https download");
} catch (e) {
http_get.impl = require('needle');
http_get.type = 'needle';
log.warn("Using needle for node-pre-gyp https download");
}
所以没有使用请求,因为任何package.json都没有请求。
预安装请求为我解决了这个问题。
重要的是必须从任何 npm 配置中删除所有 cafile 选项
ssl 可以再次设置为 true 以及 NODE_TLS_REJECT_UNAUTHORIZED 为 true.
节点版本错误,check the available versions here
设置版本,例如:
- name: "gcr.io/cloud-builders/npm:node-12.18.3"
args: ["install"]
我 运行 我的 cloudbuild.yaml
文件中的以下命令:
- name: "gcr.io/cloud-builders/npm"
args: ["install"]
此命令 运行 在 7 月 30 日正确,但从 10 月 5 日开始我收到此响应,随后是 make
输出流,直到命令失败:
Already have image (with digest): gcr.io/cloud-builders/npm
> grpc@1.24.1 install /workspace/node_modules/grpc
> node-pre-gyp install --fallback-to-build --library=static_library
node-pre-gyp WARN Using request for node-pre-gyp https download
node-pre-gyp WARN Tried to download(404): https://node-precompiled-binaries.grpc.io/grpc/v1.24.1/node-v83-linux-x64-glibc.tar.gz
node-pre-gyp WARN Pre-built binaries not found for grpc@1.24.1 and node@14.10.0 (node-v83 ABI, glibc) (falling back to source compile with node-gyp)
即使我从 git 之前成功的提交重建
,我也会收到此响应我认为这可能是因为 Cloud Build 试图根据最近成功构建的输出将我的 NodeJS 项目构建为与之前不同的版本:
Already have image (with digest): gcr.io/cloud-builders/npm
> grpc@1.24.1 install /workspace/node_modules/grpc
> node-pre-gyp install --fallback-to-build --library=static_library
node-pre-gyp WARN Using request for node-pre-gyp https download
[grpc] Success: "/workspace/node_modules/grpc/src/node/extension_binary/node-v57-linux-x64-glibc/grpc_node.node" is installed via remote
我在 package.json
中添加了以下行,试图将我的 NodeJS 版本设置为 v57
(6.13.4
),但它没有效果:
"engines" : { "node" : "6.13.4" },
如有任何帮助,我们将不胜感激。最好我如何防止我的构建版本发生变化,因为这个意外的变化让我花费了比它应该花费的更多的时间
谢谢!
这似乎是一个已知问题。
第一个解决方案可以将nodejs版本降级到10.18.0。
迟到了,但必须使用needle下载的人:
node-pre-gyp WARN Using needle for node-pre-gyp https download
可以通过先安装 request 来解决这个问题:
npm install request
然后,照常安装grpc:
npm install grpc
这是因为node-pre-gyp在安装过程中有如下代码片段:
try {
http_get.impl = require('request');
http_get.type = 'request';
log.warn("Using request for node-pre-gyp https download");
} catch (e) {
http_get.impl = require('needle');
http_get.type = 'needle';
log.warn("Using needle for node-pre-gyp https download");
}
所以没有使用请求,因为任何package.json都没有请求。 预安装请求为我解决了这个问题。 重要的是必须从任何 npm 配置中删除所有 cafile 选项 ssl 可以再次设置为 true 以及 NODE_TLS_REJECT_UNAUTHORIZED 为 true.
节点版本错误,check the available versions here
设置版本,例如:
- name: "gcr.io/cloud-builders/npm:node-12.18.3"
args: ["install"]