为什么我不能通过NPM来安装模块,除非我是root?

我正在使用最新版本的stable.js(0.8.19)

$cd ~/downloads/node $./configure $make $sudo make install 

这样做安装了node.js

现在,当我去:

 $cd ~/myproject/node_modules $npm install express npm ERR! Error: EACCES, open '/home/user/.npm/64a534c1-express.lock' npm ERR! { [Error: EACCES, open '/home/user/.npm/64a534c1-express.lock'] npm ERR! errno: 3, npm ERR! code: 'EACCES', npm ERR! path: '/home/user/.npm/64a534c1-express.lock' } npm ERR! npm ERR! Please try running this command again as root/Administrator. npm ERR! System Linux 3.5.0-17-generic npm ERR! command "/usr/local/bin/node" "/usr/local/bin/npm" "install" "express" npm ERR! cwd /home/user/myproject/src npm ERR! node -v v0.8.15 npm ERR! npm -v 1.1.66 npm ERR! path /home/user/.npm/64a534c1-express.lock npm ERR! code EACCES npm ERR! errno 3 npm ERR! stack Error: EACCES, open '/home/user/.npm/64a534c1-express.lock' npm ERR! npm ERR! Additional logging details can be found in: npm ERR! /home/user/myproject/src/npm-debug.log npm ERR! not ok code 0 

看到? 由于某种原因,我不能安装npm作为本地用户。 但是,当我使用sudo npm install express ,一切正常。

我没有一个确切的答案,但是一个解决scheme允许你在不运行sudo情况下安装模块,就是确保你所在的目录包含一个node_modules目录。

 # ~ cd myproject # ~/myproject mkdir node_modules # ~/myproject npm install express 

注意npm是如何在node_modules目录之外运行的。

由于/Users/yourname/.npm不属于您的名称,因此引发错误。

我有同样的问题,并做了以下几点:

 $: ls -lRa /Users/me/.npm/ | grep root drwxr-xr-x 2 root staff 68 26 Jun 14:08 _locks drwxr-xr-x 2 root staff 68 26 Jun 14:08 . $: sudo chown me ./_locks Passwort: chown: ./_locks: No such file or directory $: sudo chown me /Users/me/.npm/_locks/ $: sudo chown me /Users/me/.npm/ $: ls -lRa /Users/me/.npm/ | grep root -- empty output -- 

在此之后,安装的一切都很好。

为什么会发生?

npm的早期使用中,我用sudo调用npm并丢失了我的/npm/_locks