2013-02-24 127 views
36

我在安裝全局節點模塊時出現問題,並且我在網上找到的所有內容都表示解決方法只是添加-g。這不是問題。我相信這是一個鏈接問題或錯誤的目錄問題。全局節點模塊安裝不正確。未找到命令

這裏是我做的:

$ npm install -g express 
npm http GET https://registry.npmjs.org/express 
npm http 304 https://registry.npmjs.org/express 
npm http GET https://registry.npmjs.org/range-parser/0.0.4 
npm http GET https://registry.npmjs.org/mkdirp/0.3.3 
...downloads correctly 

$ express myapp 
bash: express: command not found 

然而,當我運行的直接鏈接位置來表達它的工作原理:

$ /usr/local/share/npm/bin/express myapp 

    create : myapp 
    create : myapp/package.json 
    create : myapp/app.js 
... Builds app correctly 

凡模塊:

$ which node 
/usr/local/bin/node 
$ node -pe process.execPath 
/usr/local/Cellar/node/0.8.20/bin/node 
$ npm link express 
/Users/bentonrr/Development/Personal/node_modules/express -> /usr/local/share/npm/lib/node_modules/express 

在我的.bash_profile我有:

export PATH=/usr/local/bin:$PATH 
export NODE_PATH=/usr/local/lib/node_modules:/usr/local/lib/node 

我是否需要更改節點環境以下載到正確的文件夾?是不正確的鏈接?我迷路了..

謝謝!

其他規格:

$ node --version 
v0.8.20 
$ npm --version 
1.2.11 
$ brew --version 
0.9.4 
OSX Version 10.8.2 
+1

這是因爲/ usr/local/share/npm/bin /不在您的shell的$ PATH中。這就是爲什麼shell無法找到'express'。 – 2013-02-24 19:59:54

+1

我添加了:export PATH =/usr/local/share/npm/bin:$ PATH到我的.bash_profile,它工作。謝謝!添加一個答案,以便我可以接受並upvote。 – 2013-02-24 21:42:03

回答

37

添加/usr/local/share/npm/binPATH(例如,.bashrc)。

欲瞭解更多信息,請參見npm help npm

全球模式: NPM安裝包到安裝在前綴前綴/ lib目錄/ node_modules和箱安裝在前綴/箱。

您可以找到帶有npm get prefixnpm config list | grep prefix的安裝前綴。

+0

對於使用nvm的非sudo,怎麼樣?不應該將路徑設置爲.bash_profile或.bashrc的'$ HOME/.npm'?我使用nvm,所以想確保我不在這件事上交叉捆綁。 – blamb 2017-05-03 05:16:32

-5

步驟

首先,刪除節點:

sudo rm -rf /usr/local/lib/node_modules/jitsu 
npm cache clear 
sudo npm install jitsu -g 

二,創建.bash_rc:

vi ~/.bash_rc 

複製以下項目並粘貼到文件,在步驟2中打開:

[[ -s ~/.bashrc ]] && source ~/.bashrc 
export PATH=/usr/local/share/npm/bin:$PATH 

潤柔。運行VI〜/ .bash_profile中,這是你應該看到:

[[ -s ~/.bashrc ]] && source ~/.bashrc 
export PATH=/usr/local/share/npm/bin:$PATH 

# {{{ 
# Node Completion - Auto-generated, do not touch. 
shopt -s progcomp 
for f in $(command ls ~/.node-completion); do 
    f="$HOME/.node-completion/$f" 
    test -f "$f" && . "$f" 
done 
# }}} 

我找到了答案,從這篇文章中刪除節點: JITSU FAILED TO INSTALL OSX [node 0.8.17 and NPM 1.2.0] WTF

50

這可能意味着你的節點安裝的前綴是不是你期望。

您可以設置它像這樣:

npm config set prefix /usr/local

然後嘗試再次運行npm install -g,它應該工作了。爲我工作在Mac和解決方案來自這個網站:

http://webbb.be/blog/command-not-found-node-npm/

編輯:請注意,我只是碰到這種再次來到一個新的Mac我設置了,不得不做的過程還有detailed here on stackoverflow

+3

你是男人......謝謝你! – Nico 2016-02-18 16:42:27

+2

這是正確的答案 – naomik 2016-03-30 09:08:41

+0

我正在使用'nodenv',並且很可能有更好的方法來解決這個問題。但是,您的解決方案作爲一個快速和骯髒的修復工作!然後,我將前綴切換回'nodenv'前綴,並且能夠從'/ usr/local path'運行包。謝謝! – 2017-01-19 06:31:30

3

我不會通過sudo安裝任何npm的東西!我有我自己的理由,但我只是試圖保持簡單和基於用戶,因爲這是一個用戶開發世界,並不是每個人都有root權限,而root/sudo安裝這樣的東西似乎只是讓事情開始混亂用。畢竟,所有開發者都應該能夠遵循這些指示,而不僅僅是特權sudo用戶。

這種特殊的系統是一個RHEL7通過SSH訪問:

經常一個人需要節點的各種版本,所以我用NVM https://github.com/creationix/nvm

所以隨着中說,我可以告訴你-g全球工作示例使用NVM,NPM和不使用root的節點路徑進行安裝。

如果它尚未設置您的前綴.npm-packages。 (注意,那是一個連字符,而不是下劃線)

nvm config ls 
prefix = "/home/<yourusername>/.npm-packages" 

然後調整你的〜/ .bash_profile中,或者如果你喜歡readup on why and which here,以下信息.bashrc中。

#PATH EXPORTS 
NODE_MODULES=$HOME/.npm           
NPM_PACKAGES=$HOME/.npm-packages/bin       
export PATH=$PATH:$HOME/bin:$NODE_MODULES:$NPM_PACKAGES   

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

這幾乎涵蓋了所有路徑。例如,如果你像這樣安裝gulp npm install -g gulp它符號連接~/.npm-packages/bin(注意是連字符而不是下劃線)。 (不需要gulp-cligulp-cl

您幾乎可以替換/註釋掉所有其他節點路徑導出。您可以安全地將此路徑信息放置在您已擁有的任何其他路徑信息的下面,而不會覆蓋那些內容。