2012-11-19 295 views
15

我對Node.js很陌生,試圖使用npm安裝Flatiron,但它給我一個錯誤。npm安裝錯誤ENOTDIR

sudo npm install flatiron -g 

我也得到 -

npm http GET https://registry.npmjs.org/flatiron 
npm http 304 https://registry.npmjs.org/flatiron 
npm ERR! Error: ENOTDIR, mkdir '/home/siddharthsaha/tmp/npm-28554/1353323290836-0.20847953506745398' 
npm ERR! If you need help, you may report this log at: 
npm ERR!  <http://github.com/isaacs/npm/issues> 
npm ERR! or email it to: 
npm ERR!  <[email protected]> 

npm ERR! System Linux 3.2.0-24-generic 
npm ERR! command "/usr/local/bin/node" "/usr/local/bin/npm" "install" "flatiron" "-g" 
npm ERR! cwd /home/siddharthsaha/denarit 
npm ERR! node -v v0.8.14 
npm ERR! npm -v 1.1.65 
npm ERR! path /home/siddharthsaha/tmp/npm-28554/1353323290836-0.20847953506745398 
npm ERR! code ENOTDIR 
npm ERR! errno 27 
npm ERR! 
npm ERR! Additional logging details can be found in: 
npm ERR!  /home/siddharthsaha/denarit/npm-debug.log 
npm ERR! not ok code 0 

這裏有什麼問題?我沒有任何線索。

回答

19

嘗試

sudo mkdir -p /home/siddharthsaha/tmp 
sudo npm cache clear 

開始安裝腳本之前,因爲npm http 304 https://registry.npmjs.org/flatiron行指出,該模塊從緩存中來。並且ENOTDIR也指出沒有目錄。因此,清空緩存將解決您的問題。

+0

不,我得到相同的錯誤,除了304現在更改爲200,所以它不是從緩存來。 – Siddharth

+0

你可以嘗試在沒有'-g'的地方安裝它嗎?讓我們看看它會如何。 –

+0

還沒有運氣。我做了'sudo npm cache clean',然後做了'sudo npm install flatiron',我得到了同樣的錯誤。 – Siddharth

21

剛剛解決了這個問題。這是因爲在主目錄中有一個名爲tmp的文件。

rm -rf ~/tmp 
sudo npm cache clear 
sudo npm install -g node 

而且......如果你要安裝NPM然後同樣的錯誤和解決方案適用 - 刪除~/tmp

+2

謝謝,這也解決了我的問題:-) –

0

下面是從源代碼安裝一個給定的釋放無根 注步驟 - 這將安裝nodejs,它可以爲你提供節點以及npm, 它們可以在每個版本中一起使用。

從頭開始之前刪除node.js的和NPM安裝以及這些:

sudo mv ~/.npmrc ~/.npmrc_ignore 
sudo mv ~/.npm ~/.npm_ignore 
sudo mv ~/tmp ~/tmp_ignore 
sudo mv ~/.npm-init.js ~/.npm-init.js_ignore 

安裝和的NodeJS作爲故宮自己不是root執行這些命令(OSX/Linux的):

export NODE_PARENT=${HOME}/bin_0_10_32 

mkdir ${NODE_PARENT} 

下載源來自:http://nodejs.org/download/

cd node-v0.xxxx 

./configure --prefix=${NODE_PARENT}/nodejs 

make -j8 
make install # IMPORTANT this is NOT using sudo 
       # not wanted since installing into $USER owned $NODE_PARENT 

該把它放到目錄由上述定義--prefix

export PATH=${NODE_PARENT}/nodejs/bin:$PATH 

定義環境變量NODE_PATH所以節點可以找到模塊的目錄,否則 NPM安裝XXX將會把新安裝的模塊到當前目錄:

export NODE_PATH=${NODE_PARENT}/nodejs/lib/node_modules 

當您使用語法: NPM安裝-g some_cool_module 全球的-g安裝成DIR $ NODE_PATH,而不是你的$ PWD

安裝的NodeJS給你NPM以及:

ls -la ${NODE_PARENT}/nodejs/bin 

安裝使用全局標誌-g將自動地把自己的 〜雙星〜成以上bin目錄後續模塊......像browserify

現在把上面的三個出口XXX = YYY 命令到你的〜/ .bashrc或者其他一些這樣設置你的環境

0

我直接刪除了npm-debug.log文件。 那對我來說沒問題。