Почему я не могу установить модули через NPM, если я не root?
Я использую последнюю версию стабильного 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
, все работает.
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
Я призвал npm
с sudo
и потерял мой /npm/_locks
,
У меня нет точного ответа для вас, но есть решение, позволяющее установить модуль без запуска sudo
чтобы убедиться, что каталог, в котором вы работаете, содержит node_modules
каталог.
# ~ cd myproject
# ~/myproject mkdir node_modules
# ~/myproject npm install express
Обратите внимание, как npm запускается за пределами node_modules
каталог, на один уровень выше.