npm 提示 unable to verify the first certificate 的解决小结
npm 提示 unable to verify the first certificate 的解决小结
在npm 安装包的时候,经常会提示unable to verify the first certificate,在此对该情况的解决方案进行了一些小结,总体说来,这个问题的出现都是因为用了代理。
https是一种安全的协议,确保服务端与客户端之间传送正确性的。现在中间多了一个代理转发,有一些连接会觉得这样不靠谱,不让你们连接去连接。在npm中有一个配置可以把这个去掉,就是npm config set strict-ssl=false
我说一下我自己的网络情景吧,代理才能访问外网,但是公司在全球都有代理,一但用了国外的代理,什么google,youtube,facebook等都能非常快地访问到。所以我一直就是用npm官方的源(非https),并且配置了strict-ssl=false。
今天看到有一个非常方便的node调试工具devtool想来安装,当中用到了electron,然后就是死活安装不了,之前在安装node-sqlite3也经常提示这个问题,当时是**切换代理(比如从美国的代理切换到瑞典的代理)**就可以了。但今天这个方法不凑效。
肯定是因为里面下载 electron 的时候用了一段https的下载连接,但该连接建立不起来。由于fiddler抓取不到相应的url,我就在出错提示的目录找到了下载的源代码。于是找了相应的npm包的源代码,关键代码如下
var url = process.env.NPM_CONFIG_ELECTRON_MIRROR ||
process.env.ELECTRON_MIRROR ||
opts.mirror ||
'https://github.com/atom/electron/releases/download/v'
简单地说,安装文件另外起了一份镜像,不用npm的,而且是electron的,但是其中的下载配置信息,例如strict-ssl并没有正确地传送到这里。从这个issue 可看到,由于里面用了一个严格的等于(opts.strictSSL === false),但是环境变量却是一个字符串,所以给环境变量npm_config_strict_ssl配置任何值都无法严格等于布尔值 false。
分析到原因后,很容易验证,直接敲
nugget https://github.com/atom/electron/releases/download/v0.36.8/electron-v0.36.8-win32-ia32.zip
就会提示unable to verify the first certificate
如果加上参数
--no-strict-ssl
则完全没有问题的。
但是问题还是要解决,即使是向electron发pr也没这么快合并。我突然看到这里提示electron是可以配置镜像的,于是利用环境变量
set ELECTRON_MIRROR=http://npm.taobao.org/mirrors/electron/&& npm i devtool -g
就顺顺利利地安装上了~~~
总结一下,遇到这个问题的解决方案
- 不用代理
- 不用https的源(改用http)
- 要用https的源,也要配置strict-ssl=false
- 有可能你的安装程序并不用npm的配置去安装,这个要具体看源代码
和你情况一模一样~哈哈,谢谢
谢谢! 问题终于解决了
谢谢! 问题终于解决了
yarn 安装该如何解决这个问题那?
yarn 安装该如何解决这个问题那?
类似于这样:
ELECTRON_MIRROR=https://npm.taobao.org/mirrors/electron/ yarn add -D [email protected]
Issue主你好! 我也碰到了这个问题,而且也想到了修改获取electron的源,但我的情况是要用electron-rebuild,你这里的方法好像没成功,它还是显示尝试从electronjs获取,TIMEOUT的错误:
$ set ELECTRON_MIRROR=http://npm.taobao.org/mirrors/electron/ && .\node_modules\.bin\elet ron-rebuild
- Building module: tree-sitter, Completed: 0gyp info find Python using Python version 2.7.15 found at "C:\Users\s81024356\.windows-build-tools\python27\python.exe"
\ Building module: tree-sitter, Completed: 0gyp http GET https://www.electronjs.org/headers/v12.0.4/node-v12.0.4-headers.tar.gz
| Building module: tree-sitter, Completed: 0gyp WARN install got an error, rolling back install
× Rebuild Failed
An unhandled error occurred inside electron-rebuild
node-gyp failed to rebuild 'node_modules\tree-sitter'.
Error: connect ETIMEDOUT 151.101.73.41:443
Error: node-gyp failed to rebuild 'node_modules\tree-sitter'.
Error: connect ETIMEDOUT 151.101.73.41:443
at ModuleRebuilder.rebuildNodeGypModule (node_modules\electron-rebuild\lib\src\module-rebuilder.js:193:19)
at async Rebuilder.rebuildModuleAt (node_modules\electron-rebuild\lib\src\rebuild.js:190:9)
at async Rebuilder.rebuild (node_modules\electron-rebuild\lib\src\rebuild.js:152:17)
at async node_modules\electron-rebuild\lib\src\cli.js:146:9