2016-06-07 58 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鏈接中的說明進行操作。 –