2016-06-07 60 views
4

最近与NodeJS等工作。我为不同的教程+项目安装了相当不同的软件包。 我终于结束了这种配置:Nodejs,Npm节点。包装差异?

[email protected]:~$ node -v 
v5.10.0 
[email protected]:~$ nodejs -v 
v6.2.1 
[email protected]:~$ npm -v 
3.8.3 

你能解释它们之间的区别?

+1

你在什么操作系统上?一些Ubuntu软件包可能会将Node.js安装为'nodejs'而不是'node'。实际上,您似乎安装了两个不同版本的Node.js。 –

+2

虽然不是一个坏问题,但这看起来像一个不属于SO的问题。 – Randy

+0

@randy认为相同,但不知道在哪里分配一个国旗。由于它是一个编程工具,它不适合超级用户,它不足以满足服务器故障等。 – Toxantron

回答

4

你的情况

看来你可能一个是从源代码安装的安装nodejs两个不同的版本,一个来自包管理器一样apt


[email protected]:~$ node -v 
v5.10.0 

这将返回您安装的的NodeJS旧版本,我建议你将其删除。


[email protected]:~$ nodejs -v 
v6.2.1 

这将返回安装current version of nodejs,可能你使用安装包管理器,我记得在Ubuntu它获得nodejs可执行文件名。

我建议你创建一个这样

sudo ln -s `which nodejs` /usr/bin/node 

链接,它会使用node命令也可用。

nodejs vs node on ubuntu 12.04


[email protected]:~$ npm -v 
3.8.3 

这只是版本的npm方案,并没有任何与nodejs版本。

更好的解决方案

卸载已使用nvm容易

新/旧版本之间切换,在安装或更新NVM安装node所有版本,您可以使用cURL使用安装脚本:

curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.31.1/install.sh | bash 

或Wget的:

wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.31.1/install.sh | bash 

使用

下载,编译和安装节点的最新v5.0.x版本, 做到这一点:

nvm install 5.0 

然后在任何新的外壳只需使用已安装的版本:

nvm use 5.0 

https://github.com/creationix/nvm#install-script

+1

感谢您的详细答案和解释。 NVM是一个非常好的工具!它满足我的需求! 只需添加/更正两件小事: - 最新版本的NodeJS是v6.0.0(=> nvm install 6.0) - NVM安装'node'软件包而不是'nodejs'。 node -v => v6.0.0 nodejs -v => nodejs当前未安装。 但问题已解决!感谢大家提供的快速信息。 –

3

我假设你正在使用Ubuntu。 nodenodejs是相同的工具,但node是旧版本,并nodejs当前开发分支。然而

npmnode(js)包管理器。

+0

我还建议通过nvm(https://github.com/creationix/nvm)安装节点,以便为每个项目设置一个独立的和独立的开发工作区,并且还可以灵活地创建多个不与彼此。 –

+0

我用'nvm'而不是'npm'。 最新的Node版本(v6.0.0)在NPM上尚不可用,但在NVM上。 我现在没有更多的nodejs,只有节点包。 从你的角度来看,这是解决问题的正确方法吗? –

1

这里有一点有用的信息添加到讨论,并希望这将帮助你有关节点版本冲突。

将NodeJs版本添加到您的.bash_profile(或称为.bashrc或.bashconfig)文件中的$ PATH将确保您的终端节点调用将使用最新版本而不是旧版本。

使用NVM(节点版本管理器)将允许您使用'nvm use 6.0.0'即时安装和更改节点版本,并且强烈建议使用节点和npm版本,因此一些NPM软件包将中断对你的node_modules目录中的某些npm软件包无效。 您也将有NVM在这种情况下添加到您的$ PATH,但它很容易做到:

export NVM_DIR="$HOME/.nvm" 
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" # This loads nvm 

更多细节可以在提供的链接中找到。

OP的问题得到了回答,我知道,但我认为将OP指向更好的解决方案也是一个好主意。

+0

感谢您的额外信息。但是这里有一些关于你所说的问题。 我不需要手动将NVM添加到我的$ PATH中。我猜这是默认的。 为什么我需要添加NodeJS包?节点包似乎是唯一有用的吗?如果我使用'node'包而不是'nodejs',可能会有什么问题。顺便说一下,nvm使用和更新'节点'包。不是nodejs。 (Ubuntu 12.04) –

+0

当您输入:'nvm install 6.0'时。 它安装'节点'包。不是nodejs。 :/ louis @ louis:〜/ work/sd-components $ nvm install 6.0 正在下载https://nodejs.org/dist/v6.0.0/node-v6.0.0-linux-x64.tar.xz .. 。 ################################################ ######################## 100.0% 现在使用节点v6.0.0(npm v3.8.6) louis @ louis:〜/ work/sd-组件$ node -v v6.0.0 –

+0

据我所知,Debian/Ubuntu发行版安装了Node,但它完全是其他功能。在安装NodeJ时,它与在终端中运行'node'时默认版本的安装版本冲突。 我指的是Node作为Nodejs来阐明我给你更多的信息。 将新安装的NodeJ添加到您的路径中将确保在终端中调用节点时调用该版本。您可以这样做,或者您可以按照我推荐的那个NVM链接中的说明进行操作。 –