16

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

4 回答 4

21

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

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

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

于 2013-04-17T17:10:12.167 回答
20

尝试

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

在开始安装脚本之前,因为npm http 304 https://registry.npmjs.org/flatironline 声明这个模块来自缓存。并且还ENOTDIR声明没有目录。因此,清空缓存将解决您的问题。

于 2012-11-19T11:46:57.140 回答
0

以下是在没有 root 的情况下从源安装给定版本的步骤注意 - 这会安装 nodejs,它为您提供 node 和 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 以便节点可以找到模块的目录,否则 npm install xxx 会将新安装的模块放入当前目录:

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

当您使用语法时: npm install -g some_cool_module 全局的 -g 将其安装到目录 $NODE_PATH 而不是您的 $PWD

nodejs install 也为您提供 npm :

ls -la ${NODE_PARENT}/nodejs/bin

您使用全局标志 -g 安装的后续模块将自动将它们的 ~binaries~ 放入上面的 bin dir ... 就像 browserify

现在将以上三个 export xxx=yyy 命令放入您的 ~/.bashrc 或其他类似的命令中,以便设置您的环境

于 2014-10-01T17:51:01.367 回答
0

我直接删除了npm-debug.log的文件。那对我来说没关系。

于 2016-06-27T13:31:25.617 回答