2012-11-19 7 views
15

Ich bin sehr neu in Node.js und versuche Flatiron mit npm zu installieren, aber es gibt mir einen Fehler.npm Installationsfehler ENOTDIR

sudo npm install flatiron -g 

Und ich -

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 

Was ist hier falsch? Ich habe keine Ahnung.

Antwort

19

Versuchen

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

bevor das Skript installieren starten, da npm http 304 https://registry.npmjs.org/flatiron Linie besagt, dass dieses Modul aus dem Cache kommt. Und auch ENOTDIR besagt, dass es kein Verzeichnis gibt. Daher würde das Leeren des Cache Ihr Problem lösen.

+0

Nein Ich bekomme den gleichen Fehler, außer dass die 304 nun zu 200 wechselt und somit nicht mehr aus dem Cache kommt. – Siddharth

+0

Können Sie versuchen, es ohne '-g' lokal zu installieren. Lass uns sehen, wie es gehen wird. –

+0

Kein Glück noch. Ich habe 'sudo npm cache clean' und dann' sudo npm install flatiron' und bekomme den gleichen Fehler. – Siddharth

21

Nur das Problem gelöst. Es ist da eine Datei namens tmp im Home-Verzeichnis.

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

Auch ... wenn Sie npm zu installieren versuchen dann die gleichen Fehler und Lösung gilt - löschen ~/tmp

+2

Danke, das hat mein Problem auch gelöst :-) –

0

Im Folgenden sind die Schritte einer gegebenen Freigabe von der Quelle ohne root Hinweis zu installieren - dies installiert nodejs, die Ihnen sowohl Knoten als auch npm, gibt, kommen sie pro Freigabe zusammen.

frisch entfernen, bevor node.js und npm installiert sowie diese zu starten:

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 und npm wie dich selbst nicht als root installieren Sie diese Befehle (OSX/Linux):

export NODE_PARENT=${HOME}/bin_0_10_32 

mkdir ${NODE_PARENT} 

Download-Quelle aus: 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 

, die es in dir steckt definiert durch oben prefix

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

definieren Umgebungsvariable NODE_PATH so Knoten dir für Module finden sonst npm xxx installieren neu installierten Modul in aktuellen Verzeichnis setzen:

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

wenn Sie Syntax verwenden: npm installieren -g some_cool_module die -g für global installiert es in dir $ NODE_PATH und nicht Ihre $ PWD

NodeJS installieren gibt Ihnen NPM auch:

ls -la ${NODE_PARENT}/nodejs/bin 

Nachfolgende Module Sie globalen Flag installieren mit -g automagically ihre gesetzt werden ~ ~ Binärdateien in oben ist dir ... wie browserify

nun über drei Export xxx = yyy Befehle in Ihre setzen ~/.bashrc oder so, so dass Ihre Umgebung ist Setup

0

Ich direkt löschen Sie die Datei von npm-debug.log. dann ist es in Ordnung für mich.