“message failed to fetch from registry"在尝试安装任何模块时

我不能从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
222167 次浏览

可能是npm注册表关闭了,或者你的连接断开了。

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

我建议使用中殿来管理你的节点环境。

https://npmjs.org/package/nave

它允许您轻松地安装版本,并在它们之间快速切换。

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安装。

我在npm v1.1.4(和node v0.6.12)上遇到了这个问题,它们是Ubuntu 12.04存储库版本。

看起来那个版本的npm不再被支持,更新node(和它一起的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的repo,他现在已经将其迁移到nodesource,参见:

来自:在这里

下面的方法对我来说很有效,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

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

一旦节点安装,安装npm

sudo apt-get install npm

我用的是Ubuntu。我使用apt-get安装节点。Npm没有包含在那个包中,所以它必须单独安装。我以为这可以工作,但显然Ubuntu发行版中的npm版本已经过时了。

节点维基有这样的指令:

获取最新版本的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已经被包含进来并且工作得很完美。

这个问题是由于https协议,这就是为什么其他解决方案工作(通过切换到非安全协议)。

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

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

对于随机的npm安装错误(在不同的时间(但相同的环境),错误的包是不同的),有一件事对我来说是有效的:

npm cache clean

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

这是基于在Docker实例中运行一大堆包的npm install的经验。有时Ubuntu中缺少构建/制作工具,npm错误不会显示真正的问题,直到你出于某种原因清理缓存。

你还需要安装software-properties-common才能让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

最近我在将node.js(不可避免地还有npm)升级到最新版本后遇到了这个问题:

< p > <代码>比;npm——版本 & lt;2.0.0-alpha-5 < /代码> < / p >

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

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

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

现在有来自乔伊特的官方指示(主nodejs支持者)。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请参阅链接。注意这将同时安装node和npm。

唯一对我有用的是Elementary OS Luna, Ubuntu Fork。我使用x86架构。我在这里尝试了所有的答案,但最终决定从源代码安装它。

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

sudo apt-get purge nodejs npm -y

我去下载页面查找最新的源代码&下载它,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

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

which npm node

我还不得不改变权限让它工作:

sudo chown -R $USER /usr/local

如果它不起作用,检查你的路径:

echo $PATH

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

我发现并修改了一个解决方案,我发现
这是我运行的

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

对我来说,这通常是一个代理问题,我尝试了所有方法:

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

@therefromhere的答案是最好的。然而,Node的版本已经不断向前发展,并且由于io.js的重新出现,版本控制变得复杂。按照他回答中的步骤,您将得到节点版本0.10.25—而不是最新的版本。

你仍然应该清除所有现有的node/npm包

sudo apt-get purge nodejs npm

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

列出了所有Node.js版本在上面的页面上使用Linux命令来安装它们。这些包将在Debian和Ubuntu上工作。

附注:如果你想在Ubuntu Precise或Debian Wheezy上运行Node v4.4或更高版本,你应该检查有关在旧发行版上运行的信息

P.P.S.如果你的Apt-get正在失败,脚本将不完成(谷歌引用失败了我的apt-get update)。您应该看到关于NodeSource签名密钥被添加到密匙环的消息,以及指示您Run 'apt-get install nodejs' to install Node.js的最后一条消息。

p.p.s. npm随node一起安装。安装完成后,你可以用sudo npm install npm -g更新到最新的npm