我正在设置的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更新到最新版本?中建议)进行更新,但是不影响npmnode

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.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新的优先级

#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 -gsudo 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