为什么除非我是 root 用户,否则无法通过 NPM 安装模块?

为什么除非我是 root 用户,否则无法通过 NPM 安装模块?

我正在使用最新版本的稳定 node.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,一切正常。

答案1

我没有确切的答案给你,但让你无需运行即可安装模块的解决方案sudo是确保您正在工作的目录包含一个node_modules目录。

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

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

答案2

/Users/yourname/.npm由于不属于,因此引发错误yourname

我遇到了同样的问题并执行了以下操作:

$: 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我调用了npmsudo丢失了我的/npm/_locks

相关内容