npm安装错误ENOTDIR

我对Node.js很陌生,试图用npm来安装Flatiron,但是它给我一个错误。

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! <npm-@googlegroups.com> 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 

这里有什么问题? 我没有任何线索。

尝试

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

在开始安装脚本之前,由于npm http 304 https://registry.npmjs.org/flatiron行指出这个模块来自caching。 ENOTDIR还指出没有目录。 因此,清空caching将解决您的问题。

刚刚解决了这个问题。 这是因为在主目录中有一个名为tmp的文件。

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

另外…如果你正在尝试安装npm,那么同样的错误和解决scheme适用 – 删除~/tmp

以下是在不使用root的情况下从源代码安装给定发行版的步骤。注意 – 这会安装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和npm作为你自己不要root做这些命令(OSX / linux):

 export NODE_PARENT=${HOME}/bin_0_10_32 mkdir ${NODE_PARENT} 

http://nodejs.org/download/下载源代&#x7801;

 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 

把它放到上面定义的dir中–prefix

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

定义环境variablesNODE_PATH,以便节点可以find模块的目录,否则npm install xxx会把新安装的模块放到当前目录中:

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

当你使用语法:npm install -g some_cool_module -g for global将它安装到dir $ NODE_PATH而不是你的$ PWD

nodejs install也给你npm:

 ls -la ${NODE_PARENT}/nodejs/bin 

后续使用全局标志-g安装的模块将自动把它们的〜binaries〜放到bin目录的上面…比如browserify

现在把上面的三个export xxx = yyy命令放到你的〜/ .bashrc里面或者这样,你的环境就被设置了

我直接删除npm-debug.log文件。 那么对我来说就没问题了。