尝试安装任何模块时“消息无法从注册表中获取”

时间:2012-10-16 10:56:09

标签: node.js npm

我无法从npm安装任何节点模块。

npm install socket.io

上面的命令产生了以下输出,它无法安装socket.io

npm http GET https://registry.npmjs.org/socket.io

npm ERR! Error: failed to fetch from registry: socket.io
npm ERR!     at /opt/node0610/lib/node_modules/npm/lib/utils/npm-registry-client/get.js:139:12
npm ERR!     at cb (/opt/node0610/lib/node_modules/npm/lib/utils/npm-registry-client/request.js:32:9)
npm ERR!     at Request._callback (/opt/node0610/lib/node_modules/npm/lib/utils/npm-registry-client/request.js:137:18)
npm ERR!     at Request.callback (/opt/node0610/lib/node_modules/npm/node_modules/request/main.js:109:22)
npm ERR!     at Request.<anonymous> (/opt/node0610/lib/node_modules/npm/node_modules/request/main.js:198:58)
npm ERR!     at Request.emit (events.js:88:20)
npm ERR!     at ClientRequest.<anonymous> (/opt/node0610/lib/node_modules/npm/node_modules/request/main.js:195:10)
npm ERR!     at ClientRequest.emit (events.js:67:17)
npm ERR!     at CleartextStream.<anonymous> (http.js:1134:11)
npm ERR!     at CleartextStream.emit (events.js:67:17)
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! 
npm ERR! System Linux 2.6.18-194.el5
npm ERR! command "node" "/opt/node0610/bin/npm" "install" "socket.io"
npm ERR! cwd /opt/node0610/lib/node_modules
npm ERR! node -v v0.6.10
npm ERR! npm -v 1.1.0-3
npm ERR! message failed to fetch from registry: socket.io
npm ERR! 
npm ERR! Additional logging details can be found in:
npm ERR!     /opt/node0610/lib/node_modules/npm-debug.log
npm not ok

我的NPM版本是:

[applmgr@dev node_modules]$ npm --version
1.1.0-3

我的NodeJS版本是:

[applmgr@dev node_modules]$ node --version
v0.6.10

14 个答案:

答案 0 :(得分:803)

我遇到了npm v1.1.4(和node v0.6.12)这个Ubuntu 12.04存储库版本的问题。

看起来npm的版本不再受支持了,更新节点(以及带有它的npm)解决了这个问题。

首先,卸载过时的版本(可选,但我认为这解决了我遇到的全局模块没有进行修改的问题。)

sudo apt-get purge nodejs npm

然后启用nodesource&repo并安装:

curl -sL https://deb.nodesource.com/setup | sudo bash -
sudo apt-get install -y nodejs

注意 - 之前的建议是使用Chris Lea的回购,他现在将其迁移到nodesource,请参阅:

来自:here

答案 1 :(得分:639)

https://github.com/isaacs/npm/issues/2119

我必须执行以下命令:

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

然而,这将使npm通过不安全的HTTP连接安装包。如果可以的话,你应该坚持使用

npm config set registry https://registry.npmjs.org/

而是通过HTTPS安装。

答案 2 :(得分:32)

我在Ubuntu上。我使用apt-get来安装节点。 Npm不包含在该软件包中,因此必须单独安装。我认为这样可行,但显然Ubuntu发行版中的npm版本已经过时了。

节点wiki有以下指令:

  

获取最新版本的Node或在较旧的Ubuntu和其他基于apt的发行版上安装可能需要一些额外的步骤。安装示例:

sudo apt-get update
sudo apt-get install -y python-software-properties python g++ make
sudo add-apt-repository ppa:chris-lea/node.js
sudo apt-get update
sudo apt-get install nodejs

之后,npm已经被包括在内并且工作得很好。

答案 3 :(得分:17)

您还需要为add-apt-repository安装软件属性 - 通用。 所以它将是

sudo apt-get purge nodejs npm
sudo apt-get install -y python-software-properties python g++ make software-properties-common
sudo add-apt-repository ppa:chris-lea/node.js
sudo apt-get update
sudo apt-get install nodejs

答案 4 :(得分:16)

对我来说,这通常是代理问题,我会尝试一切:

npm config set registry http://registry.npmjs.org/
npm config set strict-ssl false

npm config set proxy http://myusername:mypassword@proxy.us.somecompany:8080
npm config set https-proxy http://myusername:mypassword@proxy.us.somecompany:8080
set HTTPS_PROXY=http://myusername:mypassword@proxy.us.somecompany:8080
set HTTP_PROXY=http://myusername:mypassword@proxy.us.somecompany:8080
export HTTPS_PROXY=http://myusername:mypassword@proxy.us.somecompany:8080
export HTTP_PROXY=http://myusername:mypassword@proxy.us.somecompany:8080
export http_proxy=http://myusername:mypassword@proxy.us.somecompany:8080

npm --proxy http://myusername:mypassword@proxy.us.somecompany:8080 \
--without-ssl --insecure -g install

答案 5 :(得分:7)

此问题是由https协议引起的,这就是其他解决方案有效的原因(通过切换到非安全协议)。

对我来说,最好的解决方案是编译最新版本的节点,其中包括npm

apt-get purge nodejs npm
git clone https://github.com/nodejs/node ~/local/node
cd ~/local/node
./configure
make
make install

答案 6 :(得分:7)

对于我来说,随机npm安装错误(在不同时间(但环境相同)错误输出的包不同的一件事就是使用它:

npm cache clean

然后重复这个过程。然后这个过程似乎变得更加顺畅,真正的问题和错误信息将会出现,你可以修复它然后继续。

这是基于在Docker实例中的一个非常简单的Ubuntu安装下运行npm安装一大堆软件包的经验。有时在Ubuntu中缺少构建/制作工具,在你因某种原因清理缓存之前,npm错误不会显示真正的问题。

答案 7 :(得分:6)

现在有official instructions from joyent(主节点支持者)。对于Ubuntu:

sudo apt-get purge nodejs npm
curl -sL https://deb.nodesource.com/setup | sudo bash -
sudo apt-get install -y nodejs

对于其他unix发行版,osx和windows会看到链接。请注意,这将安装节点和npm。

答案 8 :(得分:5)

对我来说,唯一适合我的是基础OS Luna,一个Ubuntu Fork。我在x86架构上。我在这里尝试了所有的答案,但最后决定从源代码安装它。

首先,确保使用包管理器未安装它:

sudo apt-get purge nodejs npm -y

我去了下载页面查找最新的来源&amp;下载它,http://nodejs.org/download/。您可以使用curl,wget或浏览器来获取它:

wget http://nodejs.org/dist/v0.10.34/node-v0.10.34.tar.gz
tar -xvf node-v0.10.34.tar.gz 
cd node-v0.10.34
./configure
make
sudo make install

制作可能需要一段时间。完成后,您应该在/ usr / local / bin目录中安装node和npm,该目录应该已经在您的路径上。你应该验证它的位置:

which npm node

我还必须更改权限才能使其正常工作:

sudo chown -R $USER /usr/local

如果不起作用,请检查您的路径:

echo $PATH

请注意,以这种方式安装,它不会由apt-get包管理器管理。干杯!

答案 9 :(得分:2)

以下方法对我有用,Kudos给github用户:midnightcodr

确保删除已安装的任何nodejs / npm软件包。

sudo apt-get purge nodejs

sudo apt-get purge npm

现在使用以下命令安装Node js(感谢github上的midnightcodr)

curl -L https://raw.github.com/midnightcodr/rpi_node_install/master/setup.sh | bash -s 0.10.24

请注意,您可以使用命令节点调用节点,而不是nodejs。

安装节点后,安装npm

sudo apt-get install npm

答案 10 :(得分:2)

最近我将node.js(并且不可避免地是npm)升级到最新版本后出现了这个问题:

> npm --version < 2.0.0-alpha-5

注意:我没有询问的不稳定版本,我只是在OSX上的brew install npm之后得到它。

降级npm为我解决了这个问题。

安装稳定npm的最简单方法是npm install -g npm,但在某些情况下它可能不起作用,然后可能需要降级node.js。

答案 11 :(得分:1)

可能是当时npm注册表已关闭或连接断开。

无论哪种方式,您都应该升级node和npm。

我建议使用 nave 来管理您的节点环境。

https://npmjs.org/package/nave

它允许您轻松安装版本并在它们之间快速跳转。

答案 12 :(得分:1)

对于覆盆子pi我发现并修改了solution我发现了 这是我跑的

sudo su -
cd /opt
wget http://nodejs.org/dist/v0.10.28/node-v0.10.28-linux-arm-pi.tar.gz
tar xvzf node-v0.10.28-linux-arm-pi.tar.gz
ln -s node-v0.10.28-linux-arm-pi node
chmod a+rw /opt/node/lib/node_modules
chmod a+rw /opt/node/bin
echo 'PATH=$PATH:/opt/node/bin' > /etc/profile.d/node.sh

我所做的唯一模式是将所有10.25改为10.28,这是当时最新的linux-arm-pi

答案 13 :(得分:0)

@herehere的答案是最好的答案。然而,Node版本已经向前和向上移动,并且版本化因io.js的重新出现而变得复杂。按照他的回答中的步骤,您将得到节点版本0.10.25 - 而不是最新版本。

您仍应使用

清除任何现有节点/ npm包
sudo apt-get purge nodejs npm

然后查看https://github.com/nodesource/distributions#debinstall处的 nodesource deb 安装页面。

上面列出的所有Node.js版本,并使用Linux命令进行安装。这些软件包可用于 Debian和Ubuntu

P.S。如果您想在Ubuntu Precise或Debian Wheezy上运行Node v4.4或更高版本,您应该查看information about running on older distros

P.P.S。如果 apt-get失败,脚本将无法完成(Google引用失败了我的apt-get update)。您应该会看到有关将NodeSource签名密钥添加到密钥环的消息以及指示您Run 'apt-get install nodejs' to install Node.js的最终消息。

P.P.P.S。 npm随节点一起安装。安装后,您可以使用sudo npm install npm -g

更新到最新的npm