SSL错误:使用npm命令时CERT_UNTRUSTED

时间:2014-02-18 13:17:24

标签: node.js ssl

我正在尝试使用npm命令安装快速框架但是会出现以下错误。

错误消息是

E:\myFindings\nodejs_programs\node>npm install -g express
npm http GET https://registry.npmjs.org/express
npm ERR! Error: SSL Error: CERT_UNTRUSTED
npm ERR!     at ClientRequest.<anonymous> (C:\Program Files\nodejs\node_modules\npm\node_modules\request\main.js:409:26)
npm ERR!     at ClientRequest.g (events.js:185:14)
npm ERR!     at ClientRequest.EventEmitter.emit (events.js:88:17)
npm ERR!     at HTTPParser.parserOnIncomingClient [as onIncoming] (http.js:1445:7)
npm ERR!     at HTTPParser.parserOnHeadersComplete [as onHeadersComplete] (http.js:111:23)
npm ERR!     at CleartextStream.socketOnData [as ondata] (http.js:1356:20)
npm ERR!     at CleartextStream.CryptoStream._push (tls.js:396:27)
npm ERR!     at SecurePair.cycle (tls.js:751:20)
npm ERR!     at EncryptedStream.CryptoStream.write (tls.js:131:13)
npm ERR!     at Socket.ondata (stream.js:38:26)
npm ERR!  [Error: SSL Error: CERT_UNTRUSTED]
npm ERR! You may report this log at:
npm ERR!     <http://github.com/isaacs/npm/issues>
npm ERR! or email it to:
npm ERR!     <npm-@googlegroups.com>

npm ERR! System Windows_NT 6.1.7601
npm ERR! command "C:\\Program Files\\nodejs\\\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "install" "-g" "express"
npm ERR! cwd E:\myFindings\nodejs_programs\node
npm ERR! node -v v0.8.0
npm ERR! npm -v 1.1.32
npm ERR! message SSL Error: CERT_UNTRUSTED
npm ERR!
npm ERR! Additional logging details can be found in:
npm ERR!     E:\myFindings\nodejs_programs\node\npm-debug.log
npm ERR! not ok code 0

帮我解决问题

7 个答案:

答案 0 :(得分:256)

您可以使用以下命令绕过https:

npm config set strict-ssl false

或从https或http设置注册表URL,如下所示:

npm config set registry="http://registry.npmjs.org/"

但是,我个人认为绕过https不是真正的解决方案,但我们可以将其用作解决方法。

答案 1 :(得分:41)

npm ERR! node -v v0.8.0
npm ERR! npm -v 1.1.32

更新node.js安装。以下命令应该(来自here):

sudo npm cache clean -f
sudo npm install -g n
sudo n stable

编辑:好的,如果您真的有充分的理由来运行古老版本的软件,npm set ca null将解决问题。它发生了,因为内置的npm证书已经过期多年了。

答案 2 :(得分:14)

我遇到了同样的问题,最后我知道我的节点版本很旧。例如,您可以通过以下步骤在Ubuntu中安装当前的活动LTS节点版本:

sudo apt-get update
curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -
sudo apt-get install nodejs -y

有关更多版本和系统的安装说明,请参见以下链接:

https://github.com/nodesource/distributions/blob/master/README.md

答案 3 :(得分:9)

我想我得到了上述错误的原因。它是为在客户端网络中工作而提供的公司代理(虚拟专用网络)。没有这种连接,我经常面临同样的问题:maven build或npm install。

答案 4 :(得分:5)

如果您在公司代理服务器后面,请使用您公司的代理服务器为npm尝试此设置:

npm --https-proxy=http://proxy.company.com install express -g

答案 5 :(得分:2)

自从我通过Google偶然发现了该帖子:

尝试使用npm ci会比npm install多得多。

从手册:

  

简而言之,使用npm install和npm ci之间的主要区别是:

     
      
  • 项目必须具有现有的package-lock.json或npm-shrinkwrap.json。
  •   
  • 如果程序包锁定中的依赖项与package.json中的依赖项不匹配,则npm ci将退出并显示错误,而不是更新程序包锁定。
  •   
  • npm ci一次只能安装整个项目:此命令无法添加单个依赖项。
  •   
  • 如果node_modules已经存在,它将在npm ci开始安装之前自动删除。
  •   
  • 它永远不会写入package.json或任何包锁:安装实际上是冻结的。
  •   

答案 6 :(得分:0)

重新安装节点,然后更新npm。

首先我删除了节点

apt-get purge node

然后根据分布安装节点。文档here

然后

npm install npm@latest -g