#######################################################
2013.7.17 UPDATED
慎用此方法!
依舊推薦用sudo安裝npm!
修改prefix后bin沒法正確添加到全局變量的bin里去。
會導致npm里的bin方法不能用,得手動添加bin目錄,非常麻煩。
所以最後我也還是把自定義的prefix刪掉了。
#######################################################
是的,終於開始學node了。
1. 安裝全局npm或karma等大型npm的時候需要sudo嗎?
mac下,npm默認全局安裝路徑在 /usr/local/lib/node_modules
如果想安裝在默認路徑的話,npm install -g [module_name]
需要sudo
當然,我不希望把npm安裝到那深的目錄下去,於是乎
npm config set prefix ~/.node_modules -g
這樣就OK了,之後安裝全局包都會自動滾到這個目錄下,不需要sudo。
安全健康快捷。
2. $NODE_PATH問題
好吧,這個問題是上面那個問題造成的。
nodeJs的版本是v0.10.12,npm的版本是1.2.32。
按照問題一的方法修改了npm的global路徑,再npm install -g underscore
新建了一個foo.js,第一行var _ = require("underscore");
node foo.js
的時候報錯說找不到underscore。
為什麼?!
鬱悶了好久,一點點查問題。官網文檔說:
Additionally, node will search in the following locations:
1. $HOME/.node_modules
2. $HOME/.node_libraries
3. $PREFIX/lib/node
OK,問題就在1和3上。
明顯我在「問題一」里確實把$PREFIX
設置成了~/.node_modules
。
但是underscore被安裝在了$PRIFIX/lib/node_modules/underscore
。
不是~/.node_modules/underscore
。
也不是~/.node_modules/lib/node/underscore
。
為什麼?!這大概得問開發者了吧。
官方文檔還提到了$NODE_PATH
這個詞,雖然我沒看懂官方文檔,但是echo $NODE_PATH
為空。
好吧,那我們來設置一下$NODE_PATH
吧。
鑒於我用zsh,所以在~/.zshrc里加了行:
export NODE_PATH=~/.node_modules/lib/node_modules/
source .zshrc
,再node foo.js
一切OK了。
_(:3 」∠ )_
好累……
———-學會的命令———-
npm config set/get prefix
﹣ 顯示/設置npm安裝路徑,加-g就設置全局的,不加設置個人的。
npm config list
﹣ 列出當前的npm設置。
———-今日一吐槽———-
不能用Markdown的博客不是好博客。
One response to “nodeJs note 1”
用点语法高亮效果更好。