我在ubuntu上使用npm v1.0.104/node 0.6.12 -当我试图通过npm安装任何新模块时,我收到了下面的错误。IO之前使用http,而不是HTTPS &我想知道这是否会导致npm/unsigned certs的问题)。当npm试图解析“https://registry.npmjs.org”URL时,错误就会弹出。有没有办法我可以忽略错误,或者找到/添加证书到可信存储,以便继续使用npm。
任何关于需要做什么来解决问题的见解都将受到感谢(如果可能的话,我更喜欢通过配置来解决问题,而不是重新安装)。
错误:" SSL错误:SELF_SIGNED_CERT_IN_CHAIN"
完整的信息:
npm ERR! Error: SSL Error: SELF_SIGNED_CERT_IN_CHAIN
npm ERR! at ClientRequest.<anonymous> (/usr/lib/node_modules/npm/node_modules/request/main.js:252:28)
npm ERR! at ClientRequest.emit (events.js:67:17)
npm ERR! at HTTPParser.onIncoming (http.js:1261:11)
npm ERR! at HTTPParser.onHeadersComplete (http.js:102:31)
npm ERR! at CleartextStream.ondata (http.js:1150:24)
npm ERR! at CleartextStream._push (tls.js:375:27)
npm ERR! at SecurePair.cycle (tls.js:734:20)
npm ERR! at EncryptedStream.write (tls.js:130:13)
npm ERR! at Socket.ondata (stream.js:38:26)
npm ERR! at Socket.emit (events.js:67:17)
npm ERR! Report this *entire* log at:
npm ERR! <http://github.com/isaacs/npm/issues>
npm ERR! or email it to:
npm ERR! <npm-@googlegroups.com>
npm ERR!
npm ERR! System Linux 2.6.38-13-generic
npm ERR! command "node" "/usr/bin/npm" "install" "jed"
npm ERR! node -v v0.6.12
npm ERR! npm -v 1.0.104
存储库不再支持自签名证书。你需要升级npm。
// Disable the certificate temporarily in order to do the upgrade
npm config set ca ""
// Upgrade npm. -g (global) means you need root permissions; be root
// or prepend `sudo`
sudo npm install npm -g
// Undo the previous config change
npm config delete ca
// For Ubuntu/Debian-sid/Mint, node package is renamed to nodejs which
// npm cannot find. Fix this:
sudo ln -s /usr/bin/nodejs /usr/bin/node
为了使用更新后的npm,你需要打开一个新的终端会话。
来源:这最初是对jnylen的回答的编辑。虽然指导方针上写着“欢迎所有建设性的编辑,但请让它们具有实质性”,但编辑被拒绝了,理由是“这次编辑对原始帖子的修改太多;帖子的原意或意图就会丧失。”我猜社区更喜欢一个单独的答案。
存储库不再支持自签名证书。你需要升级npm。
// Disable the certificate temporarily in order to do the upgrade
npm config set ca ""
// Upgrade npm. -g (global) means you need root permissions; be root
// or prepend `sudo`
sudo npm install npm -g
// Undo the previous config change
npm config delete ca
// For Ubuntu/Debian-sid/Mint, node package is renamed to nodejs which
// npm cannot find. Fix this:
sudo ln -s /usr/bin/nodejs /usr/bin/node
为了使用更新后的npm,你需要打开一个新的终端会话。
来源:这最初是对jnylen的回答的编辑。虽然指导方针上写着“欢迎所有建设性的编辑,但请让它们具有实质性”,但编辑被拒绝了,理由是“这次编辑对原始帖子的修改太多;帖子的原意或意图就会丧失。”我猜社区更喜欢一个单独的答案。
自2014年2月27日起,npm不再支持自签名证书。下面的选项,正如npm所推荐的,是执行以下操作之一:
升级你的npm版本
npm install npm -g --ca=""
——或——
告诉你当前版本的npm使用已知的注册器
npm config set ca ""
更新:npm发布了更多关于SELF_SIGNED_CERT_IN_CHAIN和npm的帮助,提供了更多针对不同环境的解决方案
您可能需要也可能不需要在建议之前添加sudo。
其他选项
似乎人们在使用npm的建议时遇到了问题,所以这里有一些其他潜在的解决方案。
升级节点本身
收到这个错误可能表明你有一个较旧版本的node,这自然是一个较旧版本的npm。一个解决方案是升级您的Node版本。这可能是最好的选择,因为它可以使您更新并修复现有的错误和漏洞。
这里的过程取决于您如何安装Node、操作系统等。
更新npm
因为你可能是在试图安装一个包的时候到达这里的,所以npm install npm -g可能会失败,并出现同样的错误。如果是这种情况,请使用update。如Nisanth Sojan所言:
npm update npm -g
更新npm替代方案
解决潜在问题的一种方法是使用已知的注册器,安装,然后停止使用已知的注册器。如jnylen所言:
npm config set ca ""
npm install npm -g
npm config delete ca