我正在设置的Vagrant框中出现
npm
的问题。我注意到npm
版本有些旧,因此我想检查最新版本的问题。据我了解,您应该能够使用
npm
更新npm install -g npm
,但是命令没有对正在使用的npm
的影响:vagrant@box:~$ npm -v
1.3.10
vagrant@box:~$ sudo npm install -g npm
npm http GET https://registry.npmjs.org/npm
npm http 200 https://registry.npmjs.org/npm
npm http GET https://registry.npmjs.org/npm/-/npm-2.1.12.tgz
npm http 200 https://registry.npmjs.org/npm/-/npm-2.1.12.tgz
/usr/local/bin/npm -> /usr/local/lib/node_modules/npm/bin/npm-cli.js
npm@2.1.12 /usr/local/lib/node_modules/npm
vagrant@box:~$ npm -v
1.3.10
我也尝试使用
n
(如如何将nodeJS更新到最新版本?中建议)进行更新,但是不影响npm
和node
:vagrant@box:~$ node -v
v0.10.25
vagrant@box:~$
vagrant@box:~$ sudo npm install -g n
/usr/bin/n -> /usr/lib/node_modules/n/bin/n
n@1.2.9 /usr/lib/node_modules/n
vagrant@box:~$ sudo n stable
install : v0.10.33
mkdir : /usr/local/n/versions/0.10.33
fetch : http://nodejs.org/dist/v0.10.33/node-v0.10.33-linux-x64.tar.gz
installed : v0.10.33
vagrant@box:~$ node -v
v0.10.25
vagrant@box:~$ npm -v
1.3.10
我该怎么做才能将npm更新到最新版本?
#1 楼
我还是不明白为什么,但是我必须运行两次npm install -g npm
才能获得预期的效果:vagrant@box:~$ npm -v
1.3.10
vagrant@box:~$ sudo npm install -g npm
npm http GET https://registry.npmjs.org/npm
npm http 200 https://registry.npmjs.org/npm
npm http GET https://registry.npmjs.org/npm/-/npm-2.1.12.tgz
npm http 200 https://registry.npmjs.org/npm/-/npm-2.1.12.tgz
/usr/local/bin/npm -> /usr/local/lib/node_modules/npm/bin/npm-cli.js
npm@2.1.12 /usr/local/lib/node_modules/npm
vagrant@box:~$ npm -v
1.3.10
vagrant@box:~$ sudo npm install -g npm
/usr/bin/npm -> /usr/lib/node_modules/npm/bin/npm-cli.js
npm@2.1.12 /usr/lib/node_modules/npm
vagrant@box:~$ npm -v
2.1.12
评论
如果您最近重新配置为停止sudo(如此处建议:justjs.com/posts/…),则可能已更改〜/ .bashrc文件。因此,请确保运行源〜/ .bashrc,否则npm -v将找不到更新的版本。
–模数
15年1月29日在12:34
我刚刚关闭并重新打开了shell实例,以查看更新的版本。
–不同步
15年4月7日在15:13
对我来说,它从头开始起作用。
–达涅尔·雅伊茨科夫(Daneel Yaitskov)
16年7月18日在7:44
我也不得不在14.04上做两次。不会有其他猜测。干杯
–黑暗之星1
16年8月26日在12:06
运行:npm i -g npm代替npm install -g npm似乎从第一次生效。
– Miloud Eloumri
19年6月16日在1:47
#2 楼
第一次执行npm install -g npm
时,外壳程序(Bash)将在您的路径中搜索npm
,找到系统软件包安装的/usr/bin/npm
,然后使用它来安装新版本的npm
。新版本将安装在/usr/local/bin/npm
中。现在,您的路径应该在
/usr/local/bin/
之前具有/usr/bin/
,所以您会认为它现在会在/usr/local/bin/
中获取更新的版本,对吗?错误。Bash会在第一次搜索可执行文件路径后对其进行缓存,因此当您第二次说
npm
时,它仍在使用它最初发现的缓存版本/usr/bin/npm
。要告诉Bash清除此缓存并再次查看路径,您必须执行
hash -r
。很好。谢谢
评论
在14.04上为我工作了,谢谢! -prnt.sc/bybbao
–柏芝oshiトシ
16年7月27日在19:45
这对我有用,谢谢。所有其他答案均无效。
–rotoava
16-10-6在11:06
完美清晰的答案对我有用
–mrroboaat
16年11月1日,16:10
Windows 10 Bash 14.04更新后对我有用
–mrpatg
16 Dec 30'7:41
hash -r保存我的屁股。 XD
–slideshowp2
17年7月21日在9:21
#3 楼
您可以使用npm本身,PPA或手动更新nodejs。npm:
检查当前版本:
node -v
以下内容将清除缓存。
sudo npm cache clean -f
安装
n
sudo npm install -g n
您可以告诉它安装特定版本,例如:
sudo n 0.8.11
或者只是告诉它安装最新的稳定版本。两者可能都需要一段时间。
sudo n stable
要查看其是否真正升级,请运行: :
其他选项是通过chris-lea通过PPA安装它;
node -v
此PPA支持以下发行版:Utopic(14.10 ),Trusty(14.04),Saucy(13.10),Raring(13.04),Quantal(12.10),Precise(12.04),Oneiric(11.10),Natty(11.04),Lucid(10.04)。
手动:
您始终可以通过手动下载最新版本并自己安装来更新它!
参考:
通过NPM升级Node.js
Node.js基本原理:如何升级Node.js版本|福尔摩斯办公室
node.js:chris lea
node.js-下载
评论
我知道您正在尝试提供帮助,但这正是我的问题中所说的。
–霍赫斯塔普勒(Der Hochstapler)
2014-12-17 10:42
@OliverSalzburg,我不好,我看到了上面的帖子,并且吵得我无法阅读。所以,我刚刚开始发表自己的回答。
–blade19899
2014-12-17 10:46
@OliverSalzburg,我用关于如何升级的多个选项更新了我的答案!
–blade19899
2014-12-17 10:55
很棒,使用n对我来说很有效(debian sid)
–米歇尔·费尔德海姆(Michel Feldheim)
15年8月4日在13:55
这显然是正确的答案。当问题发布者“错误地”回答自己的问题然后将其标记为已接受时,这让我很烦。他们应该受到惩罚!
–二十
17年5月22日在15:53
#4 楼
用一个命令将NPM更新到最新版本要升级或更新npm的版本,只需键入终端:
sudo npm install npm@latest -g
如NPM文档页脚所述
评论
我这样做了,但是EC Ubuntu仍显示npm的旧版本,如何解决?
– vikramvi
19-10-1在7:10
#5 楼
大多数时候,我无法使用global命令对其进行升级。但是,对我有用的是从所有系统节点模块的源升级软件包:找出npm的安装位置,然后进入该文件夹
# Below command shows the destination (remove sed pipe to see the full path of npm-cli)
whereis npm | cut -c 6- | xargs readlink -f | sed 's/.\{19\}$//'
# Go in there and install it manually. In my case it was the folder below...
# NOTE: on mac its in /usr/local/lib
cd /usr/lib
sudo npm install npm@latest
为所有人(尤其是懒惰的人)展现强大的一线精神
cd `whereis npm | cut -c 6- | xargs readlink -f | sed 's/.\{18\}$//'`; cd ..; sudo npm install npm@latest
评论
这对我来说没有错误(与其他答案相反),但是npm仍未更新
– PandaWood
16-2-18在13:42
如果您对它使用sudo使用根帐户的npm文件夹,请注意这一点。如果您想知道您的npm在哪里,只需键入:whereis npm | xargs readlink -f。也许您只是在那里升级了错误的软件包。我已经在回答中添加了一些信息。
–汤姆·西维克(Tom Siwik)
16-2-18在14:25
#6 楼
您可以使用任何技巧,请勿使用Git
,我建议您在Composer terminal
中运行它们。它肯定会工作。 npm install npm -g
对我有用。#7 楼
我看不出有什么理由要重新安装已经准备好的东西,只需使用包管理器中内置的update -g进行自我更新:$ npm -v
2.15.1
$ sudo npm update -g npm
/usr/local/bin/npm -> /usr/local/lib/node_modules/npm/bin/npm-cli.js
npm@3.10.9 /usr/local/lib/node_modules/npm
$ npm -v
3.10.9
确保全局标志-g在软件包之前。过去我遇到过问题,npm不在软件包列表后注册标志。
评论
我不得不重启终端以反映更改
–好奇
18年11月6日在9:56
#8 楼
要升级npm
,您需要将nodejs
更新到包括npm
在内的最新版本。在debian Stretch和jessie中,请使用以下脚本: Ubuntu,您可以从https://deb.nodesource.com使用此脚本:
#install prerequisites
apt-get install apt-transport-https curl git lsb-release -y
#Install NodeJS from external repositories
DISTRO=$(lsb_release -c -s)
if [ "$DISTRO" == "stretch" ]
then
DISTRO="jessie"
fi
if curl -f "https://deb.nodesource.com/node_7.x/dists/$DISTRO/Release" >/dev/null
then
curl -s https://deb.nodesource.com/gpgkey/nodesource.gpg.key | apt-key add -
echo "deb https://deb.nodesource.com/node_7.x $DISTRO main" > /etc/apt/sources.list.d/nodesource.list
echo "deb-src https://deb.nodesource.com/node_7.x $DISTRO main" >> /etc/apt/sources.list.d/nodesource.list
apt-get update
# comment out the following line, if you installed nodejs 7 already (check with `apt-cache policy nodejs`)
apt-get remove nodejs nodejs-legacy npm
apt-get install nodejs -y
else
echo -e "Your distribution is not supported by NodeJS. \nYou have to install a recent NodeJS version (>=4) manually. "
fi
首先在https://github.com/nodesource/上查看源代码发行版/blob/master/deb/setup_7.x
#9 楼
我正面临这个问题。我当前的npm版本是3.3.12
,但是我尝试了sudo npm install npm -g
,sudo npm update npm -g
..没有任何效果。我在Ubuntu 15.04中搜索了目录,并在不同目录中找到了两个版本的npm。npm --version
中的v3.3.12 3.3.12
中的v3.6 /> 所以当我在较旧的npm目录中时,确实使用
/usr/local/lib/node_modules/npm
复制了3.3.12。然后当我在'/ usr / lib / node_modules'目录中时执行了/usr/lib/node_modules/npm
。#10 楼
升级到nodejs v0.12.7 # Note the new setup script name for Node.js v0.12
curl -sL https://deb.nodesource.com/setup_0.12 | sudo bash -
# Then install with:
sudo apt-get install -y nodejs
来源:Node.js v0.12,io.js和NodeSource Linux存储库| nodesource.com
评论
您确定有较新的版本吗?因为对我来说,1.3.10是官方存储库中提供的最新版本。@RegisteredUser:在我的第一个输出清单中,它甚至显示了2.1.12,这是最新版本:github.com/npm/npm/releases
试试,$ sudo npm install npm -g
@vembutech:我做到了。除非您建议将-g放置在命令行上的其他位置。
哪个npm非常有帮助。旧的npm位于/ usr / local / bin中,并具有高于/ usr / bin新的优先级