在尝试为 sql server 构建 Nodejs 的 microsoft 驱动程序时遇到以下错误
gyp 信息如果以 ok 结尾则有效
使用 [电子邮件受保护]
获取埃及信息gyp 信息使用 [电子邮件受保护] | WIN32 | x64
gyp http GET https://nodejs.org/download/release/v5.3.0/node-v5.3.0-headers.tar.gz
gyp WARN 安装出错,回滚安装
吉普错误!配置错误
吉普错误!堆栈错误:证书链中的自签名证书
吉普错误!错误时堆栈(本机)
吉普错误! TLSSocket 处的堆栈。 (_tls_wrap.js:1057:38)
吉普错误!堆栈位于 emitNone (events.js:67:13)
吉普错误!堆栈位于 TLSSocket.emit (events.js:166:7)
吉普错误!堆栈位于 TLSSocket._fini
shInitenter code here
吉普错误!不好”
我尝试了以下解决方法,但它不起作用
1) upgrade your version of npm
npm install npm -g --ca=null
- or -
2) tell your current version of npm to use known registrars
npm config set ca=""
任何人都可以指导我如何解决此证书问题
不幸的是,node-gyp 不使用 npm 的证书设置。
如果您正在调用node-gyp,您可以更新到最新的node-gyp,然后利用新的
--cafile
参数来提供有效的ca证书。
如果您使用 npm 安装使用 node-gyp 构建自身的软件包,您唯一的办法就是提前设置
NODE_TLS_REJECT_UNAUTHORIZED=0
环境变量,使其忽略 CA 证书问题。
请参阅 github 上的讨论:https://github.com/nodejs/node-gyp/issues/695
对我来说,gyp重建找不到bounding.gyp,它正在尝试下载它。 尝试运行:
sudo npm install -g --unsafe-perm binding
当
node-gyp
开始编译node.js
插件源时遇到了同样的问题。正如 @mujimu 建议的那样,在执行 NODE_TLS_REJECT_UNAUTHORIZED
之前将 shell 变量 0
值设置为 npm install
进行修复,如下所示:
$ set NODE_TLS_REJECT_UNAUTHORIZED=0
$ npm install
使用以下命令设置在执行 HTTPS 请求时要使用的证书文件:
npm config set cafile /path/to/your/cert.pem --global
使用了
npm config set strict-ssl false
并解决了问题。
如果这与公司代理相关,解决此问题的 3 个步骤:
-----BEGIN CERTIFICATE----- ABCDEFGHIJKLMNOPQRSTBLABLA...MORECHARSHERE -----END CERTIFICATE-----\n------BEGIN CERTIFICATE ... etc
取决于您的公司NODE_EXTRA_CA_CERTS=/home/<yourUser>/git/myproject/certs/myBundle.pem npm i --quiet
对于 Windows,您必须将其更改为:
NODE_EXTRA_CA_CERTS=C:\Users\<yourUser>\git\myproject\certs\myBundle.pem npm i --quiet
唯一对我有用的是使用
NODE_EXTRA_CA_CERTS
环境变量来传递自签名证书。 node-gyp
不会查看 npm
的配置文件,也不查看 npm
的任何环境变量。但使用 NODE 环境变量似乎确实可以通过。
先尝试卸载 Angular/cli 并安装 node-gyp,然后尝试重新安装 Angular cli
npm uninstall -g @angular/cli
npm install -g node-gyp
npm install -g @angular/cli
效果完美