我在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

当前回答

对于那些在mac上有同样问题并通过homebrew安装npm的人:

brew uninstall npm

then

brew install npm

适用于osx (10.9.1)

编辑:你可能需要在安装npm之前酿造更新。您还可以在更新自制程序后进行brew升级。此外,如果您遇到任何其他问题,运行brew doctor可能会有所帮助。

其他回答

存储库不再支持自签名证书。你需要升级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并重新安装。

自2014年2月27日起,npm不再支持自签名证书。 http://blog.npmjs.org/post/78085451721/npms-self-signed-certificate-is-no-more

上面的链接建议使用NPM升级NPM。对于SELF_SIGNED_CERT_IN_CHAIN…

我写了一篇文章,如果你别无选择,如何在公司防火墙后禁用大多数npm问题。

要注意你可能容易受到攻击。

https://wnderlvst.com/stories/102a237a-cea1-463b-89db-82224f1c1cbe

电源外壳

yarn config set "strict-ssl" false
yarn config set "network-timeout" 600000
$env:NODE_TLS_REJECT_UNAUTHORIZED=0

你需要找到你公司的代理详细信息和你应该使用的npm注册表。 之后,您可以在用户文件夹C:/users/<your_user>下的.npmrc文件中指定相同的内容。

这就是它如何被指定的

registry=https://your_company/npm/registry/
proxy=http://username:password@proxy:port/
https-proxy=http://username:password@proxy:port/

密码是纯文本的,这显然不理想,也许有一种方法可以用npm理解的方式加密它。

对于那些在mac上有同样问题并通过homebrew安装npm的人:

brew uninstall npm

then

brew install npm

适用于osx (10.9.1)

编辑:你可能需要在安装npm之前酿造更新。您还可以在更新自制程序后进行brew升级。此外,如果您遇到任何其他问题,运行brew doctor可能会有所帮助。