npm安装错误ENOTDIR

时间:2012-11-19 11:25:07

标签: node.js npm

我是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

这里有什么问题?我不知道。

4 个答案:

答案 0 :(得分:21)

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

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

另外......如果您尝试安装npm,则应用相同的错误和解决方案 - 删除~/tmp

答案 1 :(得分:19)

尝试

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

在启动安装脚本之前,由于npm http 304 https://registry.npmjs.org/flatiron行指出此模块来自缓存。并且ENOTDIR表示没有目录。因此,清空缓存可以解决您的问题。

答案 2 :(得分:0)

以下是从没有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/

下载源代码
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,以便节点可以找到模块的dir 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安装的后续模块将自动放入 他们的〜二进制文件〜进入上面的bin目录......比如browserify

现在把三个导出xxx = yyy 命令到〜/ .bashrc或其他一些设置,以便你的环境设置

答案 3 :(得分:0)

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